en | de

Functional Programming

bachelor program

VO2 + PS1  WS 2017/2018  703024 + 703025

Content

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

Schedule

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
10 12.01. types, type checking, unification, type inference
11 19.01. implementing a type checker
12 26.01. lazy evaluation, infinite data structures

Literature

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