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.