Advanced Functional Programming in Haskell

Course code
Student fee
Course fee (excl. housing)
Course Level
This course is closed and you can't apply anymore. Please check our other courses.

Typed functional programming languages allow for the rapid development of robust programmes. This course explores some of the more advanced language features of Haskell, a state-of-the-art functional programming language, together with some of its theoretical background. The course aims to teach not only the more advanced Haskell features, such as GADTs or type families, but also the underlying theory. Besides the lectures, there are numerous supervised lab sessions to help you come to grips with the material covered in class.

We expect students to have a basic familiarity with Haskell already. You should be able to write recursive functions over algebraic data types, such as lists and trees. There is a great deal of online material freely available that covers this material. If you've already started learning Haskell and are looking to take your functional programming skills to the next level, this is the course for you.

The course covers a variety of intermediate topics, including type-level programming, monad and monad transformers, laziness, and testing.

Utrecht Summer School Welcome Day 2023_11.pdf
Course director
Wouter Swierstra

Target audience

The course is targeted at (advanced) BSc or MSc students, (professional) developers, or anyone with an interest in functional programming in Haskell.

Aim of the course

Participants will learn a modern programming paradigm. The acquired knowledge will not only enable participants to contribute to programming projects using Haskell – it will also enable them to apply the concepts they have learned to other projects, making them better programmers in any language.

Study load

The course takes one week, with a few hours of lectures per day. We will offer supervised lab sessions to practice with the material taught in the lectures.

More information can be found on our website:


Course fee:
Student fee:
Student fee
Fee covers
Course + course materials + mealplan
Housing fee:
Housing cost
Housing provider:
Utrecht Summer School
Extra information about the fee

We will charge a registration fee of 750 euros (or 250 euros for students) to cover our expenses. If this is problematic for you for any reason at all, please email the organisers and we can try to offer you a discounted rate or a fee waiver.

Additional information

If you would like to make use of the Utrecht Summer School student accommodation, please make sure to check this page. You can check in on or after Sunday 2 July 2023, after 12.00 (noon). More information regarding the check-in is available in the pre-departure and day-to-day document. 

Contact details

Dr. Wouter Swierstra | E: | T: +31 (0)30 253 9207


Application deadline: 
Registration deadline
26 June 2023