Advanced Functional Programming
Graham Hutton, University of Nottingham
Overview
Functional languages represent the leading edge of programming language design,
and the primary setting in which new programming concepts are introduced and
studied. This module builds upon the introductory functional programming
module 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.
Timetable
- Lecture: Mondays, 11.00 - 12.00, online
- Lab: Tuesdays, 11.00 - 13.00, online
- Lecture: Thursdays, 09.00 - 10.00, online
Lectures this year are pre-recorded to enhance their
quality, but will be played to students taking the
module 'as live' during the weekly lecture slots.
The recordings will be made freely
available online after each lecture. However, it
is strongly recommended that you join the
'live' lecture sessions, both to help structure your
time and to be able to ask questions.
Coursework
The coursework for the module comprises two extended programming
exercises, and will be released on
moodle at appropriate points
during the module.
Lectures
Textbook:
 
Lectures:
- Course overview
- Sudoku in Haskell I
- Sudoku in Haskell II
- Sudoku in Haskell III
- Coursework 1: connect four
- Functors
- Applicative functors
- Monads I
- Monads II
- Monads III
- Monads IV
- Coursework 2: monadic compiler
- Reasoning about programs
- Induction
- Making append vanish I
- Making append vanish II
- Compiler correctness
Additional material:
Resources