School of Computer Science

Module 06-25344 (2012)

Functional Programming

Level 2/I

Martin Escardo Semester 1 10 credits
Co-ordinator: Martin Escardo
Reviewer: Robert Hendley

The Module Description is a strict subset of this Syllabus Page.


The aims of this module are to:

  • present the basic ideas of functional programming languages
  • demonstrate the main elements of good programming style
  • illustrate some of the uses and applications of functional programming

Learning Outcomes

On successful completion of this module, the student should be able to:

  • demonstrate an understanding of the main features and advantages of a functional language
  • write programs and implement algorithms in a functional style
  • use functional programming techniques to solve problems
  • use higher-order and list-manipulating functions
  • use various data types appropriately in the solution of problems

Teaching methods

Eleven two-hour weekly lectures plus eleven two-hour demonstrator-supervised laboratory sessions.


  • Sessional: 1.5 hr examination (80%), coursework (20%).
  • Supplementary: By examination only (100%).

Detailed Syllabus

  1. Introduction: aims of the module; structure and organisation of the module; assessment; teaching methods; style of presentation; useful books.
  2. Functional language paradigm: uses; implementation; history; main features; advantages and disadvantages; languages (e.g., Lisp, ML, OCAML, Haskell);
  3. Fundamental ideas (higher-order functions, currying, uncurrying, function composition, recursion, local definitions); programming style; literate scripts; type systems.
  4. Numbers: basic operations, basic numerical types, numerical type classes.
  5. Lists: basic operations.
  6. Advanced features: e.g., modules; monads; interactive programs; lazy evaluation; proving properties possessed by programs.

Programmes containing this module