Advanced Functional Programming

Exam Guide


Please read this guide carefully if you are sitting the Advanced Functional Programming exam in 2024, as it contains important information and resources to help you with your revision.

Graham Hutton, University of Nottingham

Assessment Format

The exam this year is an in-person written exam that must be completed in a 2-hour period.

The exam comprises three questions. The first two will be regular multi-part questions, worth 35 marks each. The third will be an essay question, worth 30 marks.

All questions will involve Haskell programming. A copy of the Haskell standard prelude will be provided during the exam, but will not include the Functor, Applicative, and Monad class declarations, or the associated instance declarations for types such as Maybe and list. Students are expected to be able to recall or recreate these as required during the exam.

Examinable Material

The exam will be based on the lecture videos, the sudoku example, and chapters 12 (monads and more) and 16 (reasoning about programs) of Programming in Haskell.

Electronic copies of all of these materials are available on Moodle.

Study Advice

Work through the examinable material, and make sure that you are able to understand and reproduce most of the examples, as these or variations on them often come up in the exam. However, you can't learn Haskell just by reading! Trying out examples for yourself in GHC should be a key part of your revision process.

Review your solutions to the two courseworks. The connect four game was designed to give experience of writing a more substantial Haskell program than you did in the first year, while the monadic compiler was designed to give you experience of using the state monad.

Work through the past exam paper below. Don't worry if you can't do everything in the past exam, as it is designed to differentiate between students and produce an average mark across the class of around 60%. The questions tend to start with easier parts, and then get more difficult as the question progresses.

You already have copies of the examinable chapters from Programming in Haskell, but you may also find it useful to read some of the other chapters to improve your Haskell knowledge. In particular, chapter 13 (monadic parsing) may be helpful for your understanding of monads, but is not examinable. Trying out some of the exercises in the book is also recommended.

Past Paper

Exam paper for the last academic year: Additional material: