Advanced Functional Programming

Graham Hutton, University of Nottingham


This is an advanced course on functional programming in Haskell. It is designed for second year Computer Science students in Nottingham, but the materials are made freely available online.

The course is based on part II of Programming in Haskell.


       Book 2e Cover


  1. Course Overview
  2. Sudoku I: First Steps
  3. Sudoku II: Initial Solvers
  4. Sudoku III: Improving Performance
  5. Coursework 1: Connect Four Game
  6. Functors
  7. Applicative Functors
  8. Monads I: Basic Concepts
  9. Monads II: Maybe, List and State
  10. Monads III: State Revisited
  11. Monads IV: Generics, Laws and Benefits
  12. Coursework 2: Monadic Compiler
  13. Reasoning About Programs
  14. Induction
  15. Making Append Vanish: Fast Reverse
  16. Making Append Vanish II: Fast Flatten
  17. Compiler Correctness

Additional material: