Fields of expertise

formal verification, theorem proving, program synthesis






Infoscience publications

Teaching & PhD


Computer Science

Communication Systems


Parallelism and concurrency

The course introduces shared-memory concurrency, as well as parallel programming, algorithms, and data structures.

Functional programming

Understanding of the principles and applications of functional programming, the fundamental models of program execution, application of fundamental methods of program composition, meta-programming through the construction of interpreters and advanced programming techniques.

Computer language processing

We teach the fundamental aspects of analyzing and interpreting computer languages, including the techniques to build compilers. You will build a working compiler from an elegant functional language into the new web standard for portable binaries called WebAssembly ( )

Formal verification

We introduce formal verification as an approach for developing highly reliable systems. Formal verification finds proofs that computer systems work under all relevant scenarios. We will learn how to use formal verification tools and explain the theory and the practice behind them.