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.
Knowledge
- 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
Skills
- 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
Competences
- 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.
- Category
- Hours
- Exam
- 4
- Exercises
- 24
- Lectures
- 32
- Practical exercises
- 48
- Preparation
- 32
- Study Groups
- 66
- Total
- 206
As
an exchange, guest and credit student - click here!
Continuing Education - click here!
- Credit
- 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.
- Aid
- 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
- Re-exam
- 30 min oral examination, without preparation.
Criteria for exam assesment
see learning outcome
Course information
- Language
- English
- Course code
- NDAK14009U
- Credit
- 7,5 ECTS
- Level
- Full Degree Master
- Duration
- 1 block
- Placement
- Block 4
- Schedule
- B (Mon 8-12 + Tues 13-17 + Fri 8-12)
- Course capacity
- no limit
- Continuing and further education
- Study board
- Study Board of Mathematics and Computer Science
Contracting department
- Department of Computer Science
Course responsibles
- Jost Berthold (8-757885877b827f7753777c417e8841777e)