NDAK14009U Parallel Functional Programming
The aim of the course is to introduce the principles and
practice of parallel programming (i.e. programming using multiple
hardware cores or processors in order to gain speed) in a
functional programming language.
The course covers different 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 lectures will provide an overview of approaches to parallel (and concurrent) programming in Haskell and Erlang, and give practical instructions to writing, testing, and optimising parallel functional programs. The topics covered in the lecture will be exercised in lab assignments, consisting of programming and analysis of programs as well as questions for theoretical discussion.
- explain salient aspects of concurrency and parallelism and distinguish the concepts
- describe different well-known parallelisation strategies, programming patterns and program skeletons
- give comprehensive overview of the different approaches to parallelism in functional programming languages, with particular focus on parallel Haskell dialects and Erlang
- write, modify, and test parallel functional programs, in different parallel Haskell dialects and in Erlang, targeting different architectures such as multicore workstations, compute clusters, and GPUs
- produce and interpret profiling data from program executions, and optimise programs according to this interpretation
- identify opportunities for using functional programming to parallelise algorithms
- given an algorithm and a hardware platform, select a suitable programming language/dialect and implement a parallel version of the algorithm
The course does not use a single textbook, but instead provides
tutorials and scientific papers available from the course pages.
Textbooks for parallel Haskell and Erlang exist (references will be provided), but none of them covers all topics discussed in the course.
- 7,5 ECTS
- Type of assessment
- Written examination, 4 hours under invigilationThe written exam is scheduled to take 4 hours and covers theoretical and practical topics taught in the lectures and practised in the lab assignments.
- Exam registration requirements
- 3 or 4 lab exercises (solved in pairs or individually) will be assessed on a 5 point scale. In total, at least 50% of the possible points for lab exercises must be obtained for participation in the final examination.
- Only certain aids allowed
The allowed aids are max. 2 sheets of hand-written or typed pre-written material (from any source).
- Marking scale
- 7-point grading scale
- Censorship form
- No external censorship
several internal examiners
- 30 min oral examination, without preparation.
Criteria for exam assesment
see learning outcome
- Practical exercises
- Study Groups