Accessibility statement

Software 3: Functional Programming with Applications - COM00025I

« Back to module search

  • Department: Computer Science
  • Module co-ordinator: Dr. Kofi Appiah
  • Credit value: 10 credits
  • Credit level: I
  • Academic year of delivery: 2022-23

Module summary

Functional programming with applications

Related modules

Co-requisite modules

  • None

Prohibited combinations

  • None

Module will run

Occurrence Teaching cycle
A Spring Term 2022-23 to Summer Term 2022-23

Module aims

This module teaches the basics and some advanced features of typed, lazy functional programming; illustrated with a variety of applications including implementing Domain Specific Languages by both deep & shallow embedding. Covers a range of functional-programming techniques, type classes, and testing tools.

Module learning outcomes



Develop, understand and analyse non-trivial small-scale programs in a functional language such as Haskell, including reasoning about equality of simple expressions.


Use the principal features of a TLFN (higher order functions, polymorphism, laziness, data types, type classes) to solve small but non-trivial, well-specified problems.


Construct suitable data types and functions to manipulate Domain Specific Languages in a TLFN.


Use available supporting tools for program development, analysis, testing and debugging, such as QuickCheck and SmallCheck


Discuss the issues affecting the sequential implementation of lazy functional languages, including determining when sequentiality is needed and its implementation through monads. 


Explain the differences between declarative and imperative descriptions of computation.


Task Length % of module mark
Online Exam -less than 24hrs (Centrally scheduled)
Software 3 Exam 1
3 hours 50
Online Exam -less than 24hrs (Centrally scheduled)
Software 3 Exam 2
3 hours 50

Special assessment rules



Task Length % of module mark
Online Exam -less than 24hrs (Centrally scheduled)
Software 3 Exam 1
3 hours 50
Online Exam -less than 24hrs (Centrally scheduled)
Software 3 Exam 2
3 hours 50

Module feedback

Feedback is provided through work in practical sessions, and after the final assessment as per normal University guidelines.

Indicative reading

*** Graham Hutton, Programming in Haskell, CUP, 2007

* Bryan O'Sullivan, John Goerzen & Donald Stewart, Real World Haskell, O'Reilly Media, 2008

+ Jeremy Gibbons & Oege de Moor, The Fun of Programming, Palgrave, 2003

+ Christopher Okasaki, Purely Functional Data Structures, CUP, 2008

The information on this page is indicative of the module that is currently on offer. The University is constantly exploring ways to enhance and improve its degree programmes and therefore reserves the right to make variations to the content and method of delivery of modules, and to discontinue modules, if such action is reasonably considered to be necessary by the University. Where appropriate, the University will notify and consult with affected students in advance about any changes that are required in line with the University's policy on the Approval of Modifications to Existing Taught Programmes of Study.