Master Course on Advanced Functional Programming
Please contact Wouter Swierstra <w.s.swierstra@uu.nl> and Trevor L. McDonell <t.l.mcdonell@uu.nl> for any enquiry about the course, mentioning [INFOAFP] in the subject.
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
-
22 Mar 2023
A reminder that very last peer reviews, for assignment 5, are due today. The project status report is due on Friday.
-
15 Mar 2023
The fifth assignment is due today, as well as the peer reviews for assignment 4.
-
08 Mar 2023
The fifth (and final) assignment is now available. Assignment 4 is due today as well as the peer reviews for assignment 3.
-
01 Mar 2023
The fourth assignment is now available. Assignment 3 is due today as well as the peer reviews for assignment 2.
-
22 Feb 2023
The third assignment is now available. Assignment 2 and the project proposal are due today.
The peer reviews for assignment 1 are due today. Remember to send both Wouter and Trevor a message containing your final review grade, as well as (for our convenience) a link to the review itself on GitHub. Further details of the procedure are on the website.
Reminder that the project proposal is due on Friday.
-
15 Feb 2023
The second assignment is now available. A reminder that the first assignment is due today, following which you’ll receive your peer reviews.
-
08 Feb 2023
The first assignment is now available. Let us know if you have any problems setting up the assignment.
-
06 Feb 2023
Welcome to the website of the University of Utrecht course on Advanced Functional Programming for the 2021-2022 academic year.