We supervise topics related to programming languages and verification. Ambitious students, especially those interested in potential Ph.D. positions, should first familiarize themselves with our Explainable Verification overview.
Click on the names of individual supervisors to see their proposed topics.
We develop and aim to maintain some useful experimental tools and languages. If you want to work on something more concrete, you may benefit from our (vast ocean of) knowledge while contributing to one of our pet projects:
Goblint is a static analyzer written in OCaml for the analysis of multi-threaded C programs. Goblint is developed jointly with the Technical University of Munich. This is a very exciting and lively project, so we encourage our best students to use this opportunity to collaborate with the Crème de la Crème of European computer science.
Contacts: Simmo Saan, Vesal Vojdani.
Põder is a new sound analyzer for Java bytecode, written in Scala. It does not yet include all the sophisticated constraint solving algorithms that powered Goblint. We want to implement these algorithms and also prove their correctness. Here, you can either replicate most of Goblint’s functionality in Põder or proceed to certify these algorithms in Coq. It may be helpful to draw inspiration from the Iris framework where similar results are proven.
Contact: Kalmer Apinis.
Temporal Millet is a prototype programming language that combines modal types with graded effect systems to specify and verify temporal properties of program resources, with automatic checking via Hindley-Milner style type inference. It extends Matija Pretnar’s Millet with temporal algebraic effects and effect handlers whose operations are guaranteed to respect their declared time costs. A web UI is provided for demonstrating reductions.
Contact: Danel Ahman.