Advanced Functional Programming
Graham Hutton, University of Nottingham
Overview
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.
Assessment
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.
Lectures
Textbook:
 
Lectures:
- Course Overview
- Sudoku I: First Steps
- Sudoku II: Initial Solvers
- Sudoku III: Improving Performance
- Coursework 1: Connect Four Game
- Functors
- Applicative Functors
- Monads I: Basic Concepts
- Monads II: Maybe, List and State
- Monads III: State Revisited
- Monads IV: Generics, Laws and Benefits
- Coursework 2: Monadic Compiler
- Reasoning About Programs
- Induction
- Making Append Vanish: Fast Reverse
- Making Append Vanish II: Fast Flatten
- Compiler Correctness
Additional material:
Resources