Advanced Functional Programming (Dr Yusuf Motara)
This module assumes familiarity with the basics of functional programming and expands both breadth and depth of knowledge. There is a strong focus on practicality and applicability, and on using theory to develop robust, error-free programs with a minimum of time and effort. The module goes into depth around programming patterns and techniques, including common monads, embedded domain-specific languages, equational reasoning, and interesting research tracks. Students are also introduced to a range of functional languages and their applications.
Topics covered include:
- Continuation-passing style
- Common patterns (e.g. state, reader, writer monads; lenses, prisms)
- Domain-specific languages
- Basic type theory
- Equational reasoning
- Untyped functional programming
- Lisp-style macros
- Functional within dysfunctional: Elm and Nix
Prerequisites: Familiarity with a typed functional programming language (e.g. Haskell, F#, Scala, etc.) and the principles underlying functional programming practice (immutability, first-class functions).
Last Modified: Tue, 24 Feb 2026 15:40:00 SAST
