CPSC521: FOUNDATIONS OF FUNCTIONAL PROGRAMMING
Lecturer: Robin Cockett
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
Why is functional programming important ....
- It promotes the view of programming as a mathematical
- It promotes programming with abstractions (generic code).
- It is type safe .... the Hindley-Milner polymorphic type checker.
- It allows fast accurate
prototyping for complex programs.
- It has datatypes and monads!
There will be a midterm exam and a final exam. The course will
the following topics in roughly this order:
- Introduction to data, maps, and folds in Haskell (3 lectures
- Monads, classes, and other topics (3 lectures + assignment)
- Introduction to the lambda calculus (5 lectures)
- Introduction to rewriting theory (4 lectures + assignment)
- Types and programming (5 lectures + assignment)
- Benjamin Pierce "Types and Programming Languages" MIT Press.
- Graham Hutton "Programming in Haskell" Cambridge University Press.
LECTURE NOTES (as they become available):
- [Due September 21]
going with Haskell (8%) (previous years: 2006 assignment 1, 2003 assignment
- [Due October 19]
Searching (see some notes here)-
- [Due November 16] A lambda
calculus reducer (8%).
- [Due December] Type
inference for the lambda calculus (15%).
- Midterm exam (20%) (2005 and answers) previous midterms (2002)
and 2007 exercise sheet!
- Final exam (35%), previous finals (2002).
Please find the lab. notes here.
LAMBDA CALCULUS AND FUNCTIONAL
- John Harrison's notes
on functional programming.
- Larry Paulson's notes
on a programming approach to the lambda calculus.
- A basic
introduction to the untyped Lambda Calculus by Ken Slonneger.
- Here is are of Barendregt's notes on
functional programming and the lambda calculus.
- Claus Reinke's page on
- Here is a lambda
calculus reduction workbench written by Peter Sestoft. The reducer
is written in Moscow ML
and allows one to explore different reduction strategies.
- Ten reasons why you really should not take any course like this (here)
- Yet another language geek (here)