Functional Programming

Distance Course (2AD200)
in the Maths & Natural Sciences programme (MN)
at Uppsala University, Sweden

Level C, 5 Credit Points, Period 2, Autumn 2004


Pierre Flener, PhD, senior lecturer, docent at Uppsala University, IT Department, room 1336 in building 1 of MIC
Personal webpage:, email: Pierre.Flener at, phone 018 / 471-1028


The main objective is to make you familiar with some of the fundamental principles and methodologies of algorithm and data-structure design in (pure) functional programming languages, using Standard ML (SML) as the teaching medium. The lectures are in English, by the instructor, and have a slight theoretical flavour, but with many examples.

More practice of functional programming (in SML) is acquired through labs and assignments. Several assignments are to be prepared at home, then tried and improved on the computer in labs under assistant supervision, then submitted, and finally graded by an assistant.


Either of the following textbooks is suitable: For the first and third book, use voucher code ZP016F for free delivery if ordering directly at Pearson Education.



To be able to follow the course productively, get practice, and work on the programming assignments, you should have an easily accessible Internet-connected computer with the following software installed: The Unix labs at MIC in Polacksbacken have this software properly pre-installed. If you plan on using other computers, try to have this software properly installed there before the course starts.


The theory is taught in English in 5 Friday sessions of 2 three-hour-lectures each (09:15-12:00 and 13:15-16:00), all in room 1311 in building 1 of MIC.

For administrative reasons, the first three-hour-lecture is mandatory: contact the instructor if you cannot make it for some reason.

Attendance at the other lectures is highly recommended, as the essential aspects (in the eyes of the instructor) will be pointed out and as the slides are not self-contained at all: they are only a support for the lectures, but not equivalent to their content.

Free printed copies of the slides are handed out in the classroom. The lectures include adapted material from Yves Deville, Chris Okasaki, and Justin Pearson.

Assistants, Assignments, Labs, and Lessons

The assistant Rafal Somla (office hours: Thursdays 14-16) supervises 4 Saturday labs of 3 hours each (9:15-12:00), all in Unix lab 1515 in building 1 of MIC. He can be reached by email via fp-course at There will be no lessons.

The initial lab aims at familiarisation with the SML/NJ language and programming environment. The last 3 labs each aim at personal support while completing and improving solutions to one of the mandatory 3 assignments.

Attendance at the labs is highly recommended. Also, without significant, constant practice and feedback, it is provably very hard to prepare properly for any exam.

Here are the rules about submitting solutions to the assignments: These rules are effective as of 8 Nov 2004. The instructor reserves the right to modify them at any moment, should special circumstances call for this.

Assignments from previous years: Autumn 2003.

Exams and Grading

This course has a total of 5 credit points, distributed over the exam and the assignments: The next exam is on Fri 8 Apr 2005.
Old Exams (by the current instructor): December 2004, January 2004, December 2003 (slightly revised, for better practice).
Also see the old exams by the instructor in the related PM1 and PK1 courses.
Old Exams (by another instructor!): January 2000, December 1999.

Course Evaluation and Feedback

Course evaluations are important and should include all opinions, including those of students who have no complaints: Urgent, constructive feedback on the course or staff is welcome any time, including anonymous notes in the instructor's mailbox (129) on the 4th floor of building 1 of MIC.

Office Hours and Questions

The instructor will answer all questions other than software infrastructure issues, for which the assistants are responsible. Preferably ask the instructor in person during the breaks of a lecture session, otherwise meet him Wednesdays 10-12 in his office. Email is not an effective medium for discussing programming issues, and the instructor cannot guarantee a fast turn-around on emailed questions.

Last modified: Wed 9 Feb 10:04:40 MEST 2005