Master Course on Advanced Functional Programming
You can join the MS Teams channel for this course by following this link.
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 FP, 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.
05 Feb 2020
Welcome to the website of the University of Utrecht course on Advanced Functional Programming for the 2020-2021 academic year.