Advanced Functional Programming

Graham Hutton, University of Nottingham


This course builds upon the introductory functional programming course by focusing on a number of more advanced topics, including aspects of recent and current research. The precise topics covered will vary from year to year, but will include topics such as programming with effects, reasoning about programs, and improving program efficiency.


The module is assessed by two programming courseworks and one written examination. The courseworks will be released on moodle at the appropriate points during the module.



      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: