DAT280 / DIT261 Parallel functional programming lp4 vt19 (7.5 hp)
The course is offered by the department of Computer Science and Engineering
- Mary Sheeran (firstname.lastname@example.org)
- Markus Aronsson (email@example.com)
- planned office hours from week 2: tuesdays 10.00-11.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.
The following students have kindly agreed to be student representatives. Please talk to them, or mail them, if you have complaints or requests or suggestions about the course. I think we could do with another representative from MPALG or some other Chalmers Masters Course. So, please volunteer.
Edin Tataragic tedin at student.chalmers.se MPALG
Sarosh Nasir gussarna at student.gu.se Computer Science, GU
Jonatan Gustafsson jongust at student.chalmers.se ?
Elisabet Lobo Vesga elilob at chalmers.se PhD student
Alejandro Gomez . Alejandro.Gomez at chalmers.se PhD student
- Troels Henriksen, designer and implementor of Futhark, DIKU Copenhaten
- Peter Sestoft, Java expert, ITU Copenhagen
- Sven Bodo Scholz, designer and implementor of Single Assignment C, Heriot Watt Univ. Edinburgh
- Erik Stenman, Erlang expert and entrepreneur
- Richard Carlsson, Erlang expert, Klarna
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.
See the Canvas calendar (below). Here is the schedule in TimeEdit.
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. However, note that Simon Marlow’s book on Parallel and Concurrent Programming in Haskell covers a good chunk of the course (and lots of other interesting stuff). The book is free to read online through his link on archive.org.
The lectures appear as calendar events and in the course summary below. Click on a lecture and you will get a description of what the lecture is about, related reading material and the slides.
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.
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.
- Parallel Programming in Haskell
- Data Parallel Programming
- Robust Parallel Erlang Programming
- Map Reduce and noSQL databases
You can see the planned lectures in the course summary below.
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.
Learning objectives and syllabus
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.
TODO The study plan at GU should be linked here.
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 syllabus page shows a table-oriented view of course schedule and basics of course grading. You can add any other comments, notes or thoughts you have about the course structure, course policies or anything else.
To add some comments, click the 'Edit' link at the top.