Programming Languages and Formal Methods


The main aim of this module is to apply formal programming language based techniques for the construction and verification of computer programs.


Special emphasis will be made on techniques outside mainstream programming in the imperative object oriented programming style, and verification using unit testing.


 All participants are able to:

  • Construct programs in the functional style
  • Verify the correctness of functional programs
  • Explain the formal foundations of the techniques covered

Kurse in diesem Modul

Programming Languages and Formal Methods:

Functional programming (Haskell):

  • Referential transparency
  • Functions as first-class citizens
  • Higher-order functions
  • Algebraic datatypes
  • Pattern matching
  • Recursion
  • Types & type inference
  • Type classes
  • Functors, Applicative, Monads



  • Property-based testing (Quickcheck)
  • Proving program correctness


Formal foundations:

  • Formal proof
  • Lambda calculus


General Programming language concepts:

  • Programming Paradigms
  • Evaluation strategies
  • Parameter passing


Special topics will be covered, depending on student interest and the time available in the current semester. Here are some examples of such topics covered in the past:

  • Type systems
  • Logic programming


The content of this course varies strongly in order to reflect student interest and recent developments in this area. It is therefore strongly recommended that you complete the examination in the same semester as you enrolled for this course.


This course will be taught in English.

Vorlesung mit 2 Lektionen pro Woche
Uebung mit 2 Lektionen pro Woche

Diese Beschreibung ist rechtlich nicht verbindlich! Weitere Informationen finden Sie in der detaillierten Modulbeschreibung.