everything.study
CMSC 22300

Functional Programming

Undergraduate / Graduate

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

Topics explicitly listed in official catalogue description

Sources