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) html
2 20.10. type classes, lists, polymorphism, pattern matching, higher-order functions pdf (x1, x4) archive html
3 27.10. modules, strings, list comprehensions, recursive functions pdf (x1, x4) archive html
4 03.11. user-defined types, algebraic data types, trees, input and output pdf (x1, x4) archive html
5 10.11. lambda-calculus, encoding data types as lambda-terms pdf (x1, x4) pdf html
6 17.11. evaluation strategies, abstract data types, sets, binary search trees pdf (x1, x4) archive html
7 24.11. induction, reasoning about functional programs, formal verification pdf (x1, x4) pdf archive html
8 01.12. efficiency, tupling, tail recursion, guarded recursion, property-based testing pdf (x1, x4) pdf html
9 15.12. combinator parsing / functional parsers pdf (x1, x4) archive html
10 12.01. types, type checking, unification, type inference pdf (x1, x4) pdf pdf
11 19.01. implementing a type checker pdf (x1, x4) archive html
12 26.01. lazy evaluation, infinite data structures pdf (x1, x4) archive
02.02. 1st exam (08:15-10:00, HS D, register by January 19, 2018) pdf
02.03. 2nd exam (09:15-11:00, HS D) pdf
13.09. 3rd exam (09:15-11:00, 3W04 (ICT building, 2nd floor), register by August 30, 2018)


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