School of Computer Science and Engineering, UNSW
CRICOS Provider No. 00098G
Session 1, 2004
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:
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.
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]:
|#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|
|#7||Guest lecture: Patryk Zadarnowsky (SSA and Functional Intermediate Languages)|
|#8||No Lecture (Anzac Day)|
|#9||Optimising Purely Functional Array Programs|
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:
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.
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:
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.