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. In a ranking calculated by the dean of studies based on anonymous student evaluation forms, the course was ranked first among all computer science courses offered at the Technical Faculty in this semester.


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.

If you are interested in a project or thesis, send me an email. You can find a list of possible topic areas in the Ultimate wiki.

Dominik Klumpp