CS141 15 CATS (7.5 ECTS) Term 2
Option - CS, CSE, CSBS and DM
Note: This module is also available to students in the second year of the above degrees for 2018/19 only.
- The prinicpal aim of this module is to introduce students to the functional programming paradigm.
- Students should be able to understand the differences between imperative and functional programming, apply functional programming techniques, and write programs in Haskell.
- Differences between imperative and functional programming
- Functional programming basics: expressions and reduction
- Types, including parametric polymorphism
- Ad-hoc polymorphism via type classes
- Recursive and higher-order functions
- Algebraic data types
- Strict vs Lazy evaluation
- Equational reasoning and inductive construction
- Functors, Applicatives, Foldables, Traversables, and Monads
- Type-level programming
- Graham Hutton: Programming in Haskell, (2nd Edition)
- Miran Lipovaca: Learn you a Haskell for a great good!
Two pieces of coursework (15%) (25%), 2 hour examination in Term 3 (60%).
30 one-hour lectures, 10 lab sessions