Software 3: Functional Programming - COM00198M

«Back to module search

  • Department: Computer Science
  • Credit value: 20 credits
  • Credit level: M
  • Academic year of delivery: 2025-26

Module will run

Occurrence Teaching period
A Semester 1 2025-26

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

S301

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

S302

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.

S303

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

S304

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

S305

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

S306

Explain the differences between declarative and imperative descriptions of computation.

Indicative assessment

Task % of module mark
Online Exam -less than 24hrs (Centrally scheduled) 100

Special assessment rules

None

Indicative reassessment

Task % of module mark
Online Exam -less than 24hrs (Centrally scheduled) 100

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