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, 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 28] Searching (see some notes on Sudoku here, some search programs here)- sudoku (14%)
  3. [Due November 18] A lambda calculus reducer here (8%).
  4. [Due December]  Type inference for the lambda calculus here (15%).
EXAMS:
  1. Midterm exam (20%) (previous exams -- please note a different order of topics may have been covered -- 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 for 2009 Jonathan here, 2008 by Ryan here, for 2007 Sean here.
 

HASKELL  LINKS:

LAMBDA CALCULUS AND FUNCTIONAL PROGRAMMING LINKS:
MONAD LINKS