UNSW   Faculty of Engineering myCSEPRINT VERSIONSITE MAP  
cse | School of Computer Science and Engineering (CRICOS Provider No. 00098G)
    #About CSE     #Undergraduate Study     #Postgraduate Study     #Timetables & Courses     #Research & Publications     #People & Work Units     #Help & Resources     #News & Events     #High School Portal

Last updated 22.03.04

Advanced Functional Programming [COMP4132]

Session 1, 2004

Course Goal

To provide students with an understanding of the theory and practise of the design, use, and implementation of functional programming languages, such as Haskell, Scheme, and Standard ML. This includes selected topics from the following areas:

  • Foundations: lambda calculus, semantics, and type systems.
  • Design: side-effects, exceptions, concurrency, and parallelism.
  • Implementation: abstract machines, program transformation, and memory management.
  • Programming techniques: combinator libraries, monads, generic programming, and meta programming.
  • Applications: domain specific languages, graphics, web programming, reactive systems, and scientific programming.

Students are to gain an understanding of the conceptual basis of functional programming as well as practical experience in the use of functional programming in a variety of application areas.



Students are expected to be competent in the use of at least one functional programming language, preferably Haskell. For practical reasons, Haskell will be the language of choice for most of the course, and especially, for the assignments. All students are expected to aquire the required level of Haskell programming on their own.

Course Prerequisites

  1. COMP3131 or COMP9102
  2. For P/G students, the permission of the lecturer is required.



The course is taught in a seminar format, that is, in addition to lectures by the lecturer, each student will have to give a presentation about a selected topic in front of the class. A detailed schedule will be drawn after all students have chosen a topic in Week 1. The lecture in Week 1 encompasses the usual course introduction, a topic overview, topic selection by students, and a review of the central features and benefits of functional programming.

The first six weeks of lectures will be delivered by the lecturer and will cover basic material that serves as a foundation for understanding more advanced topics. Later weeks will mainly consist of student presentations plus discussions about the presented material. The following is a preliminary schedule for the course [updated 22 March 4]:

Week Topic
#1 Intro, Topics & Essential Features of FP
#2 Imperative Functional Programming (I/O)
#3 Imperative Functional Programming (Concurrency, Exceptions & FFI)
#4 Compilation of Functional Languages
#5 Guest lecture: Roman Leshchinskiy (Generic Programming with Morphisms)
#6 Type Systems & How to Give a Presentation
Midsession Recess
#7 Guest lecture: Patryk Zadarnowsky (SSA and Functional Intermediate Languages)
#8 No Lecture (Anzac Day)
#9 Optimising Purely Functional Array Programs
#10 Student presentations
#11 Student presentations
#12 Student presentations
#13 Student presentations
#14 Revision


Each student will have to complete a programming assignment that stands in relation to his or her topic. Assignment submissions are broken down into three milestones:

  • Milestone 1 [Week 5; 10 marks]: Functional specification of software to be developed (e.g., in the case of a library, the documented library interface needs to be provided).
  • Milestone 2 [Week 9; 15 marks]: Basic functionality must be supported.
  • Milestone 3 [Week 13; 15 marks]: Full functionality must be supported.

Overall, 40 marks can be scored on the assignment. The penalty for late submission of a milestone will be a 4% reduction of the maximum possible mark (for this milestone) per day of being late. No milestone will be accepted later than one week after the deadline.

Final Examination

There will be a two hour written examination. Please make up your mind of whether you are sick on the examination day before the examination begins. Supplementary examination will only be granted when a student was sick on the examination day (or could not attend for reasons beyond the student's control), has not attended the examination, and submits a special consideration at the Student Centre within three days after the examination day.


The final mark is determined by the sum of the following three components:

  1. Seminar presentation: 20 marks
  2. Assignment: 40 marks
  3. Final examination: 40 marks


References will be provided as part of the topic list. There is no set textbook. For students who wish to consult an introductory textbook on functional programming to revise their FP background, I recommend the following two:

For further reading, refer to the recommended reading list.

Top Of Page

Site maintained by webmistress@cse.unsw.edu.au
Please read the UNSW Copyright & Disclaimer Statement