Courses TaughtA list of courses that I have taught at university including a short description.
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 non-trivial 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, push-down, linear-bounded, Turing machines), the Chomsky hierarchy, computability, Church-Turing thesis, undecidability and many-one reductions
Complexity of Algorithms
Topics include: asymptotic notation, time and space as complexity measures, time and space hierarchy theorems, NP-completeness, approximation algorithms
Topics include: polynomial-time hierarchy, probabilistic and counting complexity classes, Toda's theorem, sparsity and advice, relativization
Parameterized Complexity Theory
Topics include: fixed-parameter tractability, bounded-search trees, kernelization, parameterized reductions, W- and A-hierarchy and their relation and logical characterizations