The first half of this unit involves revision of Haskell, a functional programming language that most people will be familiar with from Foundations of CS. Again the hugs interpreter is used. There are a number of compulsory labs during this section (unassessed).

The second half of the unit relates to the implementation of functional programming languages and Haskell including lambda calculus, beta reduction, graph reduction, super combinators, fold/unfold transformations, proof by induction, garbage collection and more.

There is a programming test halfway through the unit. There is also an assignment, often relating to implementing type inference for a toy version of Haskell (the parser is provided for you). The exam content relates entirely to the second half of the unit (and you need >= 40% to pass the exam). You cannot simply rely on knowing Haskell to pass this unit.

Attendance in tutorials is not required but provides examples of what will be in the exam.

Taken in 2006 and 2007 by RowanDavies. Unfortunately this unit is no longer being run.

Unit website

Handbook entry