Parallel Functional Programming (7.5 hec), Spring 2014, DAT280, DIT261
- 2014-04-16: There was a bug in the original version of sudoku.erl, which caused it to find invalid solutions in some cases (thanks Sebastian Olsson for finding it!). A fixed version is available here; the only significant change is to the refine_rows/1 function, which could previously return a refined row with duplicate elements. (I also added a check to the solve/1 function that the solution found is actually valid!). This change ought not to affect your parallelisation efforts, so you should just be able to replace the old refine_rows/1 with the new one.
- 2014-04-04: There is no lecture today. The next lecture is monday's lecture on Skeletons by Jost Berthold from Copenhagen University.
- 2014-04-01: The address of the fire system has changed. This should be corrected on course web pages now.
- 2014-03-31: There seem to be insoluble issues with Fire today. Apologies for this. We will extend the lab deadline to midnight tomorrow night and hope to get it fixed tomorrow. Also, we have added some advice about GHC flags and other questions that students have been asking about.
- 2014-03-29: The Fire system for submissions will be available on monday March 31, just in time for you to submit your first lab. The only administrator who can set it up gets back from vacation on that day. We apologise for this delay.
- 2014-03-26: Volunteers to be course rep. are still needed. Please email Mary (ms at chalmers.se) if you are willing to take this on. It should not be too much work and it will allow you to influence the development of the course.
- 2014-03-18: There is now a Google group for the course. Announcements related to the course will be sent here. You can also use it to find a lab partner. Please join the group if you are taking the course.
- 2014-02-18: The first lecture will be on March 17 at 13.15 in EB. The web page is being gradually constructed from the 2013 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 17th 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. You will get the 7.5 hec once you have passed both the labs and the written exam.
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 in the first week of 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 last year, see the set of slides linked below. This is the third instance of a course that will always be evolving. It is also deliberatly 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.
This years representatives include Eugene Greshov (groshev at student.chalmers.se). We still need more volunteers.
Chalmers central instructions on course evaluation