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) | 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) | archive | html | |
8 | 01.12. | efficiency, tupling, tail recursion, guarded recursion, property-based testing | pdf (x1, x4) | 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) | |||
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) | |||||
02.03. | 2nd exam (09:15-11:00, HS D) | |||||
13.09. | 3rd exam (09:15-11:00, 3W04 (ICT building, 2nd floor), register by August 30, 2018) |
Literature
Amongst other sources the course incorporates material from the following books:- Graham Hutton, Programming in Haskell, Cambridge University Press, 2007, ISBN 9780521692694.
- Richard Bird, Introduction to Functional Programming using Haskell (2nd edition), Prentice Hall Europe, 1998, ISBN 0134843460.
- Bryan O'Sullivan, Don Stewart, and John Goerzen, Real World Haskell, (freely available online) O'Reilly, 2008, ISBN 9780596514983.
- Simon Thompson, Haskell: The Craft of Functional Programming, Addison-Wesley, 1996, ISBN 0201403579.
- Chris Hankin, An Introduction to Lambda Calculi for Computer Scientists, King's College Publications, ISBN 0954300653.
- Chris Okasaki, Purely Functional Data Structures, Cambridge University Press, 1999, ISBN 0521663504.
- Fethi Rabhi and Guy Lapalme, Algorithms: A Functional Programming Approach, Addison-Wesley, 1999, ISBN 0201596040.