Suggested sources
• H P Barendregt The Lambda Calculus. Exhaustive, high level.
• J R Hindley and J P Seldin Introduction to Combinators and Lambda-Calculus. You'll need to dig for the relevant parts.
• G E Revesz Lambda-calculus, Combinators and Functional Programming.
• A Church The Calculi of Lambda-Conversion
• A Field and P Harrison Functional Programming. Some chapters covering λ calculus and combinator calculus.
• The Web. If you can't find material relevant to this course on the Web you don't deserve to be a Computer Scientist!
• Structure and Interpretation of Computer Programs by Abelson and Sussman. Required reading by anyone interested in Computer Science. Full text now online

If you happen to find To Mock a Mockingbird by Raymond Smullyan do tell me what it's like.

Lecture notes for CM20167. These notes were written for my benefit, not yours, so there may be differences in their content and what I taught. There are definitely errors, too.
This course has 25% coursework which involves programming in Lisp. It is good to get some practice on these simple Lisp Exercises. There are some sample solutions to the Exercises, but don't cheat yourself by peeking before you've tried for yourself. (Further exercise: find and fix the bugs in the solutions!)

Euscheme, and some introductory notes. Euscheme is an interpreter for the EuLisp language. The name "Euscheme" is designed to confuse, as it has very little to do with Scheme.

If anyone can port Euscheme to W2K/XP I'd be pleased to hear from you.

Addendum: A MacOS X version is available.

Date: Fri, 15 Oct 2004 15:55:48 +0100
From: Mark campbell
To: rjb
Subject: Euscheme on XP

I found a quick workaround for getting Euscheme going in windows. The Dos
version (0.35) in a DosBox (http://dosbox.sourceforge.net) window seems to run
ok - got it going on a bucs machine this afternoon. Not a port (as I have no
idea even how to start that) but it seems to work and is easy to get going.

Mark Campbell

Some limbering-up exercises in β-reduction. And answers, but don't peek!

Some code for Church Numerals in Lisp.

My Lisp course notes. There are definitely bugs and typos in these notes, so beware!

Other bits and pieces:
##### Past Papers

"Without understanding functional programming, you can't invent MapReduce, the algorithm that makes Google so massively scalable. The terms Map and Reduce come from Lisp and functional programming. MapReduce is, in retrospect, obvious to anyone who remembers from their [...] programming class that purely functional programs have no side effects and are thus trivially parallelizable." Joel Spolsky
"Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot." Eric Raymond, "How to Become a Hacker"
From the Erlang FAQ:

"The traditional ways of slowing down projects, like adding armies of consultants halfway through, spending a year writing detailed design specifications before any code is written, rigidly following a waterfall model, spreading development across several countries and holding team meetings to decide on the colour of the serviettes used at lunch work just as well for Erlang as for other languages."