Software 3: Functional Programming - COM00198M
- 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