CPSC521:  FOUNDATIONS OF FUNCTIONAL PROGRAMMING

Lecturer: Robin Cockett

The purpose of the course is to explore various aspects of functional programming using Haskell.  In particular, the course provides an introduction to the lambda calculus, types in programming, type inference, and the role of these in the implementation of functional programming.

Why is functional programming important ....

COURSE OUTLINE:

There will be a midterm exam and a final exam.  The course will cover the following topics in roughly this order:

READING (recommended):

LECTURE NOTES (as they become available):

ASSIGNMENTS:
  1. [Due September 26] Getting going with Haskell (8%)   assignment 1.
  2. [Due October 24] Lambda lifting (14%) assignment 2.
  3. [Due November 21] Abstract machines: lambda calculus reduction (8%) assignment 3.
  4. [Due December]  Type inference for the lambda calculus here (15%).
EXAMS:
  1. Midterm exam (20%) -- early November: previous exams -- please note a different order of topics may have been covered -- 2016, 2014,2010, 20092007, 2006 and exercise sheet, 2005 and answers, 2002.
  2. Final exam (35%), (previous finals 2002, 2006, 2007, and 2008 oral).
LAB. NOTES:

Please find the lab. notes (Cole Comfort) here.

HASKELL  LINKS:

MONAD LINKS
LAMBDA CALCULUS AND FUNCTIONAL PROGRAMMING LINKS:

COMPUTABILITY LINKS: