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 23] Getting going with Haskell (8%)   assignment 1.
  2. [Due October 21] Lambda lifting (14%) assignment 2.
  3. [Due November 18] 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 from Prashant Kumar here.

HASKELL  LINKS:

MONAD LINKS
LAMBDA CALCULUS AND FUNCTIONAL PROGRAMMING LINKS:

COMPUTABILITY LINKS: