Functional Programming (GC16 / 3011)

Spring Term 2012


GC16/3011 is lectured by Christopher D. Clack .

This page, and the associated pages, are likely to be updated as the course progresses. It was last updated on 10/01/11, but still contains some data from previous years.


You can obtain the following information regarding: the syllabus, the text book for the course, the groups, the coursework, and previous exams.

  • The GC16 Syllabus (old code D16) (including reading list, though see also the 3011 reading list)
  • The 3011 Syllabus (old code 3C11) (including reading list)
  • Draft Schedule of Lectures
  • The Lectures (PowerPoint versions)

  • Additional material that all students should read:
    1. The Memory Management Example (powerpoint)
    2. Graph Reduction handout (beware - big file!)
    3. Garbage Collection handout (beware - big file!)
    4. Memory Allocation handout (beware - big file!)
    5. Lambda Calculus handout (beware - big file!)
    6. The four stroke reduction engine - original paper (beware - big file!)
    7. The text book
    8. A list of Miranda's built-in functions

  • An online version of Simon Peyton Jones's book about implementation (relevant to the second half of the course): click here.
  • Some exercises for you to test yourself against!
  • Coursework 2012
  • Past Papers. This link is to cached copies of some past exam papers for the course. Previous exam papers can also either be obtained from the UCL Library, or (for recent years) from the Past Papers Web Page. Look for course codes GC16, D16, 3011, 3C11, B330 and B11a. In some years, Standard ML was used as the teaching language - with a little perserverance, it is actually quite easy to translate simple programs from Standard ML to Miranda.

    You will need a PostScript viewer such as GSview (which works with both Netscape and Internet Explorer) to view and print the PostScript versions of these papers. If your computer runs a 32-bit version of Windows, such as Windows95 or later, or WindowsNT, you will need two self-extracting executable files that you can download by clicking the following two links: click here for the latest version of Aladdin Ghostscript (the underlying engine for gsview) and click here for gsview itself. Run Ghostscript first, then gsview; they should install themselves. (If using Internet Explorer, set your Windows filetype association for .ps files to launch GSview. If using Netscape, edit preferences to set GSview as the application for .ps files. More information about GSview can be found here.)


  • If you are interested in the "Haiku or Karate?" real-world example given in the first lecture, you might like to read a short research paper that describes the project.

    Another paper is available which discusses common student problems - you might like to read it.

    For those of you who want a challenge, there's a paper available on dynamic cyclic data structures.

  • PostScript   or PDF  or DVI

  • Finally, there is some information about doing functional programming at home on a PC:

  • Doing functional programming at home
  • How to obtain a copy of AMANDA