CS256 15 CATS (7.5 ECTS) Term 1
Option - CS, CMS and DM
Note: This module is only available to students in the second year of their degree and is not available as an unusual option to students in other years of study.
Programming: CS118. Mathematics: CS130, CS136, IB104 or IB121
- To empower students with a firm foundation in the theory and practise of functional programming (FP).
- To provide students with a formal framework in which to motivate and develop an understanding of multiple programming language paradigms.
On completion of the module the student should be able to:
- design and develop substantive FP software in Haskell.
- to critically consider common features and issues in designing a multi-paradigm programming language such as Python.
- Language paradigms: imperative, procedural, script, object-orientation, concurrent , declarative, functional, reflective and multi-paradigm.
- Functional paradigms: mathematics asa programming language, evaluatin expressions strictly (SML) or non-strictly (Haskell).
- Recursion: control and repetition.
- Logic: pattern matching, types and λ-calculus in Haskell.
- Programs as data: methods in Java objects, higher order functions in FP, and reflective programming in Lisp.
- Consistency for imperative and functional: inefficiency of recursion, impure FP using reference types (SML), pure FP using monads (Haskell).
- Consistency for functional and object-orientation: FP in Java, multi-paradigm Python.
- Graham Hutton: Programming in Haskell, CUP, 2007
Two pieces of coursework (15%) (25%), 2 hour examination in Term 3 (60%).
20 one-hour lectures, 10 Haskell lab sessions