Home > Research Groups > Secure Software Engineering > Teaching > Lecture Archive > SS2019 > Type Systems for Correctness and Security SS2019

Type Systems for Correctness and Security SS2019

Course number and language


The teaching language will be English. Questions in German will be permitted.

Course material

The slides and exercise sheets will be uploaded after each lecture on the course's KoaLA page.

Registering and asking questions

To attend the course, you have to register in the PAUL system as a participant. To ask questions, please use the discussion forum in koaLA, so that others can benefit from the answers as well.

Time and Place

Lecture-Exercise integrated superblock:

Thu 14:00-19:00 at lecture hall A5 (it used to be in F2.211) 

The first superblock WILL include an exercise and will be on October 12th, 2017 starting at 14:00 (2pm).


Type systems in programming languages prevent illicit behavior of programs from the very start. They provide valuable feedback for programmers to prevent bugs, crashes or even security vulnerabilities. In this lecture we will study the theory, the properties and the implementation of modern type systems. 


The course "Foundations of Programming Languages / Grundlagen der Programmiersprachen" is highly recommended but not required. In general you should be comfortable with formal, mathematical definitions as well as programming in Java, Scala, or a functional programming language.


We will cover the following topics (but are not limited to them):

  • Static vs. dynamic type checking
  • Operational semantics
  • Soundness of type systems
  • Type inference
  • Polymorphism
  • Subtyping
  • Security and safety guarantees through type systems
  • Path-dependent types
  • Dependent types 

We will take a pragmatic view on type systems and will develop type checkers along our way in this course to put theory into practice immediately. We will also take a closer look at type systems of well-known programming languages like Java or Scala.

Exercise Sessions

The weekly exercise classes serve the following purposes: Deepen your knowledge and understanding of the course material, being comfortable with formalisms and proofs, applying and implementing the theoretical concepts, and preparing you to present your knowledge (with respect to the final oral exam). 

If you have questions to the organization of the course, the topic, to the exercises or you get stuck during solving the exercises, please use the forum in KOALA. We try to answer on a regular basis and as soon as possible.

Recommended reading material

The course is based on the following book:
Benjamin C. Pierce. 2002. Types and Programming Languages. The MIT Press.

We might cover some more advanced topics from this book:
Benjamin C. Pierce. 2004. Advanced Topics in Types and Programming Languages. The MIT Press. 

Other reading material will be announced on the course slides.