- Department: Computer Science
- Module co-ordinator: Dr. Kofi Appiah
- Credit value: 10 credits
- Credit level: I
- Academic year of delivery: 2020-21
Functional programming with applications
Pre-requisite modules
Co-requisite modules
- None
Prohibited combinations
- None
Occurrence | Teaching cycle |
---|---|
A | Spring Term 2020-21 to Summer Term 2020-21 |
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.
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 | Length | % of module mark |
---|---|---|
Practical Software 3 Lab Exam |
N/A | 100 |
None
Task | Length | % of module mark |
---|---|---|
Practical Software 3 Lab Exam |
N/A | 100 |
Feedback is provided through work in practical sessions, and after the final assessment as per normal 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
Coronavirus (COVID-19): changes to courses
The 2020/21 academic year will start in September. We aim to deliver as much face-to-face teaching as we can, supported by high quality online alternatives where we must.
Find details of the measures we're planning to protect our community.