School of Computer Science

Module 06-30190 (2019)

Functional Programming

Level 2/I

Martin Escardo Noam Zeilberger Semester 1 20 credits
Co-ordinator: Noam Zeilberger
Reviewer: Martin Escardo

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


This module builds on the Logic and Computation module, developing practical programming skills in a typed functional programming language. It will strengthen the algorithmic and design skills of the students within the functional framework, and will introduce them to some advanced programming language features.


The aims of this module are to:

  1. Present the basic ideas of functional programming languages
  2. Demonstrate the main elements of good functional programming style.
  3. Illustrate some of the uses and applications of functional programming.
  4. Introduce more advanced features of typed functional programming.

Learning Outcomes

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

  1. Demonstrate practical understanding of a wide range of recursive types
  2. Demonstrate practical understanding of infinite data structures
  3. Demonstrate practical understanding of lazy programming
  4. Understand, manage and use effects
  5. Understand and use higher-order functions
  6. Write functional programs using advanced features such as type classes and monads




Teaching methods

Provided via lectures, workshops, and guided independent study.

Contact hours: Total: 200 hours, Lecture 33 hours, Workshops: 22 hours, Guided independent study: 145 hours.


Assessments: 2hr Examination (80%), Continuous Assessment (20%) Reassessment: 2hr Examination (100%)

Programmes containing this module