Parallel Functional Programming (7.5 hec), Spring 2015, DAT280, DIT261
- 2015-04-27 By popular request, we've enabled the Amazon EC2 benchmark rig again. If you tune to this page, you'll see a small form that will let you run your code on an 8-core machine in batch mode (so no two submissions run at the same time). See the note under that form for more information.
- 2015-04-13: We have created a Google Group that you can use to ask questions and look for labmates.
- 2015-03-10: The first lecture will be on March 23 at 13.15 in EB. The web page is being gradually constructed from the 2014 instance.
- John Hughes, Lecturer and Examiner, rjmh@chalmers dot se
- Mary Sheeran, Lecturer and Examiner, ms@chalmers dot se
- Nick Frolov, Teaching Assistant, frolov@chalmers dot se
- Office hours: Nick: Wed. 13-14, Fri. 13-14 (may change if unsuitable for many students)
- Homepage: http://www.cse.chalmers.se/edu/course/pfp/
is open to both GU and Chalmers students. Chalmers students should register in advance (as usual). Unlike last year, GU students have to register online in LPW at the Student portal. Registration is obligatory. Please register yourself on the course at the latest 23rd March (the date of the first lecture). Otherwise, you may lose your place. If you have problems, please contact the CSE student office.
Further information about registration and how to activate your student account
- PFP is an elective, advanced MSc and doctoral level university course.
It is run by the
at the CSE department
- a written exam (you may bring a "summary sheet").
- Course "size": 7.5hec = 1/8 study year ~= 200h = 25h / week => time to get started;-)
- Grading: The final grade of the course is based on your exam grade. You must, however, also pass the lab assignments.
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). Simon will kindly give a guest lecture about his work (using Haskell to tame parallelism at Facebook) later in the course.
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 relies heavily on scientific papers as its source materials.
The course covers the principles and practice of parallel programming in both Haskell and Erlang.
Advantages of functional approaches to parallelism: immutability, absence of data races, determinism.
Profiling parallel functional programs: granularity, bottlenecks, locality, data-dependencies.
Parallel functional algorithms: divide-and-conquer.
Approaches to expressing parallelism in Haskell: the Eval monad, the Par monad, parallel strategies, skeletons, data parallelism.
Functional approaches to GPU programming
Parallelisation and distribution for Erlang. Scalability. Handling errors in a massively parallel system.
Case studies of industrial parallel functional programming, such as map-reduce and scalable no-SQL databases.
Guest lectures by leading researchers and practitioners.
- Knowledge and understanding
- Distinguish between concurrency and parallelism.
- Give an overview of approaches to parallelism in functional programming languages in the scientific literature.
- Skills and abilities
- 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.
- Interpret parallelism profiles and address bottlenecks.
- Judgement and approach
- Identify when using a functional language may be appropriate for solving a parallel programming problem.
- Select an appropriate form of parallel functional programming for a given problem, and explain the choice.
The prerequisite for the course is to have successfully completed two years within the subject Computer Science or equivalent.
Course participants must also have completed an introductory course in Functional programming, preferably using Haskell or Erlang.
(Examples at Chalmers are TDA452 and TDA555).
For the purpose of course evaluation and improvement, each course has student
representatives. Their role includes giving the teachers
feedback on the course. The procedure for course evaluation
changed considerably recently, see the set of slides linked below. This is the fourth instance of a course that will always be evolving. It is also deliberately close to the state of the art in research, which makes it different from many courses. Please talk to us, the teachers, about how you experience the course, or, even better, volunteer to be a student representative. We promise to take seriously your ideas, suggestions and constructive criticism.
Chalmers central instructions on course evaluation