• We received a large number of applications, currently over triple the capacity of students we can support. Please keep in mind that you might not be able to attend the seminar this semester if the circumstances are not urgent (e.g. you are already on our waiting list from previous terms).

Bachelor/Master Seminar (SS 2021)

We offer a Bachelor/Master seminar “Software Engineering” (cf. 89-3311 / 89-3372).


The topics cover theory and application of program language theory. We will work with the following (preliminary) topics:

  • Success typing (Erlang/Elixir)
  • Generics & subtyping (Java)
  • Session types
  • Uniqueness typing (Clean)
  • Dependent types (Agda, Idris, Coq, …)
  • Path-dependent types (Scala, Dotty)
  • Algebraic subtyping (MLsub)
  • Flow typing (Kotlin, Typescript, …)
  • Intersection types
  • Recursive types
  • Linear types (Haskell)
  • rank-n types (Haskell)
  • higher-order type construtors (kinding) (Haskell)
  • advanced type classes (Haskell)
  • existential types (Haskell)

For the theory part, we reference “Benjamin C. Pierce, Types and Programming Languages” and “Benjamin C. Pierce, Advanced Topics in Types and Programming Languages”. More details and materials will be published later.


To participate in our seminar, you should be familiar with the concepts introduced in the course Grundlagen der Programmierung:

  • Static and dynamic semantics of programming languages
  • Parametric and subtype polymorphism
  • Lambda calculus

If you haven’t participated in that lecture, we recommend you to read at least chapter 2 of the aforementioned book by Benjamin Pierce.


You need to register by e-mail with Albert Schimpf with the following information:

  • Your name
  • Information whether you will be taking the seminar as bachelor or master seminar
  • List of courses(s) you attended to fulfil the prerequisites; for international students, please add a link to the syllabus of the courses

The registration deadline is March 31st 2021 23:59 CET