Functional programming takes as its central organizing principle the idea of evaluating functions rather than executing instructions. It supports programming at a high level of abstraction and carefully controlling side effects, which are critical given the ever-increasing sophistication of software systems. This course explores functional programming in depth, with a unifying focus on recursion. It combines practical programming experience in Haskell with a deep exploration of the underlying theory. Covered topics include algebraic data types, induction, lambda calculus, equivalence of iteration and recursion, laziness, folds and unfolds, termination analysis, and domain theory. These topics are of importance not only to functional programming per se, but also to the design and analysis of any software system.
Format: Lectures/labs. Evaluation will be based on weekly assignments, class presentations, programming projects, and examinations.
Prerequisites: CSCI 136. Current or expected Computer Science majors will be given preference.
Class webpage: Click here!
Taught by: Yorgey
Scheduled offerings:
Past offerings:
Fall 2014
354-01 (LEC) TR 9:55-11:10
354-02 (CON) W 1:00-2:25