Master Course on Advanced Functional Programming
Please contact Wouter Swierstra <w.s.swierstra@uu.nl> and Paige Randall North <p.r.north@uu.nl> for any enquiry about the course.
Teaching objectives
This course builds upon knowledge gained in the introductory courses on functional programming and languages and compilers. Using Haskell as our language of choice, we will look at several advanced functional programming techniques, patterns, libraries and tools. Many of the research projects inside the department make use of functional programming, and one goal of this course is to equip you with sufficient knowledge in order to participate in such projects.
Typically we will read some papers from the recent literature and a number of classical papers. Upon completing this course you will be able:
-
to develop large Haskell programs, using a wide range of Haskell tools and libraries;
-
to understand the theoretical underpinnings of functional programming, including topics such as lambda calculus, type systems, combinatory logic, Church encodings, etc.
-
to design types carefully, guaranteeing certain invariants, and develop type-level programs to compute new types or derive new programs from type definitions
-
to prove properties of programs using equational reasoning, and formalize these proofs in an interactive proof assistant such as Agda or Coq;
-
to understand different evaluation strategies, and in particular, lazy evaluation and its impact on performance;
-
to apply common design patterns and structures used in functional languages, such as monoids, functors, monads, applicative functors, etc.
Latest news
-
02 Feb 2024
Welcome to the website of the University of Utrecht course on Advanced Functional Programming for the 2023-2024 academic year.