CM20214/CM20221: Advanced Programming Principles

End of Unit

These units have now been retired. Their content will be found in other units, such as CM20252 Artificial intelligence; CM20253 Comparative Programming Languages; CM20256 Functional programming; and others

Running Lisp

Here are some basic instructions on how to run Lisp on the BUCS lcpu machines

A very quick introduction to Lisp

Unit Catalogue

CM20214

CM20221

Some texts

Books on Functional Languages

Lisp has been about since 1957, so there's been plenty of books written, some of them good. The only thing to bear in mind is that each book tends to be written for a particular variety of Lisp, so the details might vary.

Books I like include

Books on Algorithms

Again, very many texts out there. It's mostly a matter of personal choice of a book that suits you.

The dedicated follower should read all volumes of "The Art of Computer Programming" by Knuth.

Some links

Wikipedia articles tend to be fairly accurate in this area.

Running Lisp and Haskell

Several Lisps are available on the BUCS machines lcpu

Scheme

~masrjb/bin/xlisp
Xlisp is a Scheme

Euscheme

~masrjb/bin/euscheme
Euscheme is a EuLisp. Notes on using Euscheme.

CLisp

~masrjb/bin/clisp
This is GNU Common Lisp

Clojure

~masrjb/bin/clojure
This is a Lisp that runs on top of the Java VM. There are a lot of differences between this and other Lisps

Haskell

~masrjb/bin/hugs

Most of the above are open source and may well run on other operating systems. As Year 2 Students you should have no trouble finding the sources and getting them to run.

There is even a repository of EuLisp implementations. A version of EuScheme, renamed EuXlisp, is provided.

Lisp Exercises

Some introductory exercises.

99 Lisp problems (for the keen student).

Online Past Papers

This Unit was previously called "Programming II"

Past papers

The CM20221 exam content is identical.

This is a relatively new course that combines elements from several previous courses:

Coursework

Coursework accounts for 40% of the unit total. There are two assignments; one in semester 1 and the second in semester 2.

CM20214 The first coursework will be worth 10% and the second 20%. Another 10% will come from part of the Integrative Project.

CM20221 Each coursework will be worth 20%. Coursework 1 for CM20221 will be larger than that for CM20214.

The Exam

At the end of Semester 2 (60%).

Slides

These will be released after the relevant lecture: there is no substitute to having the material go through your brain at least once!

Note that these slides are hints to me as to what topics I should cover: they don't contain everything I shall say in lectures. You should come to lectures, take notes in lectures and read books.

The file numbers don't correspond to anything in particular in terms of lectures or subject covered. I may have skipped some material in lectures: why not improve your general education and read the extra too! The exam will only be set on material covered in lectures.

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 50 51 52 53 54 55 56 57