- Department: Computer Science
- Credit value: 20 credits
- Credit level: H
- Academic year of delivery: 2024-25
Functional programming
Pre-requisite modules
Co-requisite modules
- None
Prohibited combinations
- None
Occurrence | Teaching period |
---|---|
A | Semester 1 2024-25 |
SOF3 teaches the basics and advanced features of typed, lazy functional programming, illustrated with a variety of applications, including implementing Domain Specific Languages by both deep and shallow embedding. This module also covers a range of functional-programming techniques, type classes, and testing tools.
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. |
Task | % of module mark |
---|---|
Essay/coursework | 100 |
None
Task | % of module mark |
---|---|
Essay/coursework | 100 |
Feedback is provided verbally throughout the module via practical sessions/seminars, and after the summative assessment as per University guidelines.
*** 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