Teaching

Lectures

In the summer semester 2024, I was the lecturer for the course Cyber-Physical Systems II: Program Verification. SS24

In this course, designed in 2019 by Matthias Heizmann, Tanja Schindler and me, we develop the syntax and formal semantics of a simple imperative programming language. We use this language to introduce students to a variety of different approaches to program verification, from Hoare logic, over predicate transformers and symbolic execution, abstract interpretation (*new in 2024*), all the way to CEGAR-based verification algorithms such as predicate abstraction and trace abstraction.

15 students attended this elective course and participated in the oral exams. The lecture received the Teaching Award of the Faculty of Engineering for the best Computer Science lecture in the summer semester 2024, based on a ranking calculated from student evaluations.


I also co-organise several lectures offered by the Chair for Software Engineering.

Seminars

I frequently supervise students in the different seminars offered by the Chair for Software Engineering.

In our seminars, students are given source material on their assigned topic (either a research paper, or a book chapter). The students then write a proposal, describing their plan for a 25min research talk on the topic. Students typically review one or more proposals by other students. The talks are either given throughout the semester, or as a “block seminar” in 1-2 days near the end of the semester.

Student Projects

I have supervised a number of student projects revolving around program analysis and automata theory. Such projects typically involve a theoretical component (e.g. design / modification and correctness proof of some algorithm) and an implementation and evaluation component in the context of the program analysis and automata theory framework Ultimate.

Dominik Klumpp