I've been teaching the MSc Functional Programming module (ECS713U/P) since 2012. The module covers basic and advanced concepts around functional programming using Haskell. It aims to familiarise the student with the underlying type structures and the basic programming methodology. The module also covers more advanced type structures (such as functors) and programming techniques such as map-reduce and monadic programming, and to illustrate how these are used to give flexible extendible and parallelisable solutions to programming problems. EECS students enrolled in the module can access the module page here.