Advanced Functional Programming
Bachelor Program
VU3 - WS 2025/2026 - 703139
This course will cover the following topics: types and type-inference, functors and monads, parsing, error handling, concurrency, profiling, functional data structures and algorithms, etc.
Language: English | Literature: See slides | Prerequisites: Basic knowledge of functional programming
Slides and Haskell-Sources
| Week | Date | Topics | Slides | Sources |
| 01 | 08.10 | Organisation and Introduction, Strict- and Lazy-Evaluation | ||
| 02 | 15.10 | Type-Checking and Type-Inference | ||
| 03 | 22.10 | Type-Inference in Haskell, Kinds and Explicit Foralls | ||
| 04 | 29.10 | Functor, Record Syntax, Case Study: A Simple Parser | ||
| 05 | 05.11 | Monads in General, State Monads | ||
| 06 | 12.11 | Evaluation of Monadic Code, Example: Tseitin, Error Monads | ||
| 07 | 19.11 | Parsing in General, Parsec | ||
| 08 | 26.11 | Backtracking during Parsing, Applicative Functors, Monad Transformers | ||
| 09 | 03.12 | System Programming, Exceptions | ||
| 10 | 10.12 | Introduction to Parallelism and Concurrency | ||
| 11 | 07.01 | Concurrent Channels, Asynchronous Actions, Cancellations and Timeouts | ||
| 12 | 14.01 | Profiling, Efficient Data Structures | ||
| 13 | 21.01 | Q & A | ||
| 14 | 28.01 | Exam |
Evaluation
The course will be graded based on weakly exercises (50 %) and based on a final exam (50 %). It is not required to obtain positive grades in both parts.
The exam will consist of programming exercises (on paper) and non-programming exercises.
For the programming exercises, you do not have to learn all Haskell documentation pages by heart. In particular, in the exam no names of imports will be required. It is planned that several functions—that should be used in the exam—are explicitly stated (by their name and sometypes by their type).
Feedback
From this page you can send anonymous feedback. 'Anonymous' means that we cannot identify the sender of the message – therefore, do not use feedback to ask questions for which you would like a direct answer.