Advanced functional programming 2012
News
Lecture friday Dec. 14 is cancelled.
Haskell assignment is out. Due date is Fri 21 Dec 2012.
Project proposals are out. Due date is Jan 18 2013.
Important
- Please read the following general statements about cheating and plagiarism when handing in assignments: http://www.it.uu.se/edu/fusk?lang=en
- The question regarding the exam does not entail that the exam date will be moved. It was only assessing if there were several students that had no practical possibility to attend the ordinary exam in January. An extra time might be arranged, but it is only for those students, not for everyone.
Schedule
Note that there are 14 lectures in the schedule, but the course consists only of ten lectures. Some lectures will thus be removed, but they are there to cater for changes in my availability.
Teacher
Teaching assistant:
Stavros Aronis Office hours: Wednesdays 09:00 - 12:00
Important dates
- Nov. 22 -- Erlang Assignment due
- Dec. 9 -- Common Lisp assignment due
- Dec. 21 -- Haskell assignment due
- Jan. 7, 8-13 -- written exam at Polacksbacken
- Jan. 18 -- project due
Overview
This course should be seen as a continuation of a basic course in functional programming, taking over where it stopped by introducing different languages with their special properties and more advanced concepts.
The course will cover, or introduce, three languages: Common Lisp, Erlang and Haskell. Some of the concepts covered in the course are higher order functions (but the course assumes you know the basics of this), lazy evaluation, program data equivalence, processes, macros done right, monads and more.
Prerequisites
Read the prerequisites to find out what I assume that you already know about functional programming.
Examination
To fulfill the course you will have to complete
- Three assignments (one in each language)
- One larger project (you choose the language)
- A written exam
Lecture Overview
- Introduction, Erlang Overview pdf
- Concurrent Programming in Erlang pdf
- Advanced Concepts in Erlang pdf
- Introduction to Common Lisp pdf
- Common Lisp Macros pdf
- Advanced Concepts in Common Lisp pdf
- Introduction to Haskell pdf
- Type classes pdf
- Modules and Monads pdf (also, see the Wikipedia page on monads)
- More on Monads pdf, Use of Erlang at Klarna
Exercises
These are recommended exercises to use for getting hands on knowledge in the different languages. The exercises are not mandatory and do not have to be handed in, but the general recommendation is to do them. They range from almost trivial to more challenging and difficult.
For all the exercises (and assignments), it is recommended that you take a test driven approach, i.e., start by formulating a number of tests (input and their expected outcome). This is a great way to gain understanding of a problem without spending time on writing code. There are unit test frameworks available for all three languages.
Assignments
Make sure you follow the rules when submitting your solutions.
- Erlang Assignments Due Nov. 22
- Common Lisp Assignments Due Dec. 9
- Haskell Assignments Due Dec. 21
Project
Books and Links
A collection of recommended reading, both books and links.
Emacs