Courses Taught
A list of courses that I have taught at university including a short description.
Systematic Programming
A practical programming course that I have developed from scratch where the basics of expressing algorithms in a purely functional programming language are trained and algorithms with nontrivial control flow have to be implemented such that a rigid specification in terms of traces is respected. Course material from summer semester 2020 is freely available.

Foundations of Theoretical Computer Science
Topics include: formal languages and grammars, different automata types (finite, pushdown, linearbounded, Turing machines), the Chomsky hierarchy, computability, ChurchTuring thesis, undecidability and manyone reductions

Complexity of Algorithms
Topics include: asymptotic notation, time and space as complexity measures, time and space hierarchy theorems, NPcompleteness, approximation algorithms

Complexity Theory
Topics include: polynomialtime hierarchy, probabilistic and counting complexity classes, Toda's theorem, sparsity and advice, relativization

Parameterized Complexity Theory
Topics include: fixedparameter tractability, boundedsearch trees, kernelization, parameterized reductions, W and Ahierarchy and their relation and logical characterizations