Functional Programming


All participants are able to explain and apply formal programming-language-based techniques for the construction and verification of computer programs. Special emphasis will be made on techniques that surpass some of the limitations of mainstream programming in the imperative object oriented programming style, and on alternatives to mainstream verification using unit testing.


In particular, all participants should be able to:

  • construct programs in the functional style.
  • verify the correctness of programs using property-based testing and proof.
  • explain the formal foundations of the techniques covered.


The functional programming language Haskell will be used as a basis whenever appropriate.  

Kurse in diesem Modul

Functional Programming :

Functional programming (Haskell):

  • Referential transparency
  • Functions as first-class citizens
  • Higher-order functions
  • Algebraic datatypes
  • Pattern matching
  • Recursion
  • List comprehension
  • Types & type inference
  • Type classes  – functors, applicative, monads



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

Formal foundations:

  • Lambda calculus

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

  • Logic programming
  • Formal proof
  • Type systems
  • Dependent types 


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.