This is the homepage of the Computer Science for All courses by Professor Christoph Kirsch.

This is an advanced class on systems engineering for masters students in computer science. The goal of the class is to introduce students to ongoing scientific work in systems and prepare them for working on their masters thesis, in systems but not necessarily. The class focuses on advanced topics that are often unfamiliar to students such as SMT and SAT solving as well as adiabatic quantum computing and gate-model quantum machines.

After taking the class, students are able to understand the difference between motivation and problem definition, and know what is involved in defining an interesting problem to work on, regardless of any particular motivation, how to work on a problem for which they a-priori do not know a solution, and finally how to give a presentation with proper problem definition, solution, and conclusions.

- Unicorn
- SMT Solving
- SAT Solving
- Adiabatic Quantum Computing
- Gate-Model Quantum Machines

The class is based on the unicorn toolchain which encodes symbolic execution of RISC-V machine code in logically equivalent SMT and SAT formulae as well as quadratic unconstrained binary optimization (QUBO) models and quantum circuits (QCs).

Instead of assignments, students are asked to work in teams of 2-3 students on a coding project defined in class. Projects may involve unicorn but do not have to.

The class is organized as part of a series of Computer Science for All classes.