Additional material is available from those who have taught
the course in previous years: Mike Gordon
and Andy
Gordon. The theoretical part of the course is also covered by lecture
notes from Larry
Paulson.

Syllabus

This describes roughly how the course was taught over 12 lectures, each of
slightly less than an hour. Only what was actually taught will be examinable.

Introduction and Overview Functional and imperative
programming: contrast, pros and cons. General structure of the course: how
lambda calculus turns out to be a general programming language. Lambda
notation: how it clarifies variable binding and provides a general analysis of
mathematical notation. Currying. Russell's paradox.