Functional Programming
Programming languages often conflate the definition of mathematical functions, which deterministically map inputs to outputs, and computations that effect changes, such as interacting with users and their machines. In this course, students will develop an enriched perspective about these two related but distinct mechanisms, by studying the statically-typed pure functional programming language Haskell. Topics include: algebraic datatypes, an elegant language for describing and manipulating domain-specific data; higher-order functions and type polymorphism, expressive mechanisms for abstracting programs; and a core set of type classes, with strong connections to category theory, that serve as a foundational and practical basis for mixing pure functions with stateful and interactive computations. In addition to small and medium sized programming assignments, the course includes a larger open-ended final project.
Topics
- algebraic datatypes
- an elegant language for describing and manipulating domain-specific data
- higher-order functions and type polymorphism
- expressive mechanisms for abstracting programs
- and a core set of type classes
- with strong connections to category theory
- that serve as a foundational and practical basis for mixing pure functions with stateful and interactive computations
Topics explicitly listed in official catalogue description
Sources
- Course catalogue ↗2026-2027