Course information

When: Monday 14:00-16:00 and Wednesday 18:00-20:00
Where: Room H.206
Mailing list:

This course is an introduction into the research field of programming languages. It aims to teach students formal systems for describing and understanding programming languages and their features and semantics, as well as techniques for automatically reasoning about programs. The goals of this course are:

  1. We will study lambda calculus and use it to describe both functional and imperative features of programming languages, and operational semantics as a way to describe the meaning of programs.
  2. We study static analysis techniques, i.e., techniques for automatically reasoning about program source code, such as type systems, data flow analysis, alias analysis, and Hoare logic.
  3. We will learn functional programming using OCaml, and write a simple interpreter and type checker for our calculus.


Coursework amounts to:


Homeworks: 3 points
Project: 3 points
Mid-term: 3 points
Final exam: 3 points

Reading material

None of these are required, although the class will follow the structure of Pierce's book for the biggest part of the semester.

Class dependencies