Course syllabus

Note that the Parallel Functional Programming Course will run remotely in LP4. We are still trying to figure out the implications of this. Our current plan is to try to change as little as possible. 



DAT280 / DIT261 Parallel functional programming lp4 vt20 (7.5 hp)

The course is offered by the department of Computer Science and Engineering

Contact details




  • Maximilian Algehed (
    • planned office hours from week 2: tuesdays 11.00-12.00
  • Robert Krook (
    • planned office hours from week 2: fridays 14.00-15.00

When using office hours, it is a good idea to send a mail, preferably the day before, with a good explanation of your problem and of what you have tried to do to solve it. It may turn out that an email discussion is sufficient to solve your problem. Please do not expect instant turnaround, however. Our PhD students have a lot to do, and need to avoid fragmentation.

Student Representatives

Please volunteer to be a student representative! We will call for volunteers in the first two lectures. Volunteering is particularly important this year, as we are giving and taking the course in difficult circumstances.

The following three students are our student representatives for this course. Thank you!  

Oskar Vigren                                              

Ricardo Zanetti                                          

Sebastian Frenzel Gabrielsson         

Talk to them (or the teachers) if you have comments, questions or suggestions about the course. 

Mid course meeting

We held a meeting with the above student representatives, both TAs and both teachers on Monday April 27 2020.

The overall impression was that the course is going well, despite having to be run remotely. The student representatives  indicated that they have not heard of students facing extra problems because of the current restrictions and remote working.

Max reported that more students are coming to office hours, with better prepared questions. The result is that students are submitting better quality lab work. So we should seriously consider doing office hours remotely in future courses, even when current restrictions are lifted. It was suggested that we maintain a FAQ for frequently asked questions about the labs, as Robert reported that there are many repeat questions.  One student asked that we post labs earlier.

Attendance at lectures is considerably higher than normal and asking questions verbally (after raising a zoom hand) or in chat is working ok. The students like the pauses for quizzes and would like more. We should also remember to indicate when a lecture slot will not be used, and not only announce that in a previous lecture. Mary reported that we cannot yet say what the exam will be like, because we have not yet figured out how to go from a closed book exam in an exam hall, to an open book exam at home.

We are open to suggestions for additional questions for inclusion on the course questionnaire. Contact the teachers if you have suggestions. We will try to hold the final course evaluation meeting before summer (if possibly for other participants) rather than in the middle of LP1 as suggested in the normal process.

Guest Lecturers

  • Troels Henriksen, designer and implementor of Futhark, (Links to an external site.) DIKU Copenhagen
  • Gabriele Keller, expert on DSLs for parallel programming, Utrecht University
  • Peter Sestoft, Java expert, ITU Copenhagen
  • Erik Stenman, Erlang expert and entrepreneur
  • Richard Carlsson, Erlang expert, Klarna

Course purpose

The aim of the course is to introduce the principles and practice of parallel programming in a functional programming language. By parallel programming, we mean programming using multiple hardware cores or processors in order to gain speed. The course covers approaches to parallel functional programming in both Haskell and Erlang. It covers current research on these topics, and also research on other approaches. The course relies heavily on scientific papers as its source materials and is intended also to give students some insights into research in computer science by considering the development of a sub-field over time. Guest lectures from both academia and industry help to place the presented research and programming methods in context.



Note that Chalmers has now required us to go online for teaching in LP4. This course will be given without physical meetings or lectures. We will hold the lectures at the set times using zoom. Please make sure that you know how to use it (though you will be able to attend lectures by just clicking a link).

Here is the schedule in  TimeEdit. Ignore the room indications. Everything will be in zoom.

Course literature

This course does not have a set book. Instead, you will be expected to read a number of research papers. Links to those papers will be made available through the lectures page (Links to an external site.). However, note that Simon Marlow’s book on Parallel and Concurrent Programming in Haskell (Links to an external site.) covers a good chunk of the course (and lots of other interesting stuff). The book is free to read online through his link on (Links to an external site.).

The lectures appear under Modules and we will also add them to the calendar with the zoom invitations. Click on a lecture and you will get a description of what the lecture is about, related reading material and the slides. 


Course design

The course has four compulsory lab exercises, which should be done in pairs. Only in special circumstances will we permit students to work alone, as we must conserve scarce TA resources. Since everyone will be working remotely this year, we will only very rarely give a dispensation for the 2-person lab group rule.

We will use fire for submission and grading of labs. Details will be entered here when available. The lab exercises are central to your learning on this course. Those who take them seriously typically also pass the written exam easily. That is our intention.

You must pass all four lab exercises (as well as the final written exam) to complete the course.

The course has two main parts, each of which in turn has two parts, and hence the four lab exercises. These sub-parts are given in time order as 1 3 2 4.

  1. Parallel Programming in Haskell
  2. Data Parallel Programming
  3. Robust Parallel Erlang Programming
  4. Map Reduce and noSQL databases

All planned lectures will be published.

The guest lectures on the course are not just entertaining additions but contain examinable material. For example, there is a lab exercise related to the lecture on Futhark. So come to the guest lectures! They also broaden the view of parallel functional programming presented by the course.

Changes made since the last occasion

The course will be very similar to last year's instance, except that it will be an online course.

Learning objectives and syllabus

Learning objectives:

Knowledge and understanding

1. Distinguish between concurrency and parallelism.

2. Give an overview of approaches to parallelism in functional programming languages in the scientific literature.

Skills and abilities

1. Write, modify and test parallel functional programs, to run on a variety of architectures such as shared memory multiprocessors, networks of commodity servers, and GPUs.

2. Interpret parallelism profiles and address bottlenecks.


Judgement and approach

1. Identify when using a functional language may be appropriate for solving a parallel programming problem.

2. Select an appropriate form of parallel functional programming for a given problem, and explain the choice.

Link to the syllabus on Studieportalen.

Study plan (Chalmers)

TODO The study plan at GU should be linked here.

Examination form

You must complete all four lab exercises to complete the course. Labs are done in pairs.

You must also pass the written exam at the end of the course. Your grade on the course is determined entirely by your result on the written exam. The written exam will have to be taken online, and this will cause us difficulty as our usual form of exam is not well suited to the take-at-home form.  We will publish more info when we know more about how the exam will look. (This is not our most pressing problem.)




Course summary:

Date Details Due