en | de

Functional Programming

bachelor program

VO2 + PS1  WS 2017/2018  703024 + 703025


The course provides an introduction to functional programming, covering both, practical examples using Haskell (a purely functional language) and theoretical background.


Exercises are to be found at the end of the slides of each lecture.

lecture date topics slides notes sources solutions
1 06.10. historical overview, Haskell introduction, first steps pdf (x1, x4)
2 20.10. type classes, lists, polymorphism, pattern matching, higher-order functions pdf (x1, x4)
3 27.10. modules, strings, list comprehensions, recursive functions
4 03.11. user-defined types, algebraic data types, trees, input and output
5 10.11. lambda-calculus, encoding data types as lambda-terms
6 17.11. evaluation strategies, abstract data types, sets, binary search trees
7 24.11. induction, reasoning about functional programs, formal verification
8 01.12. efficiency, tupling, tail recursion, guarded recursion, property-based testing
9 15.12. combinator parsing / functional parsers
10 12.01. types, type checking, unification, type inference
11 19.01. implementing a type checker
12 26.01. lazy evaluation, infinite data structures


Amongst other sources the course incorporates material from the following books: