Engelsk   Dansk
Velkommen til Københavns Universitets kursuskatalog

NDAK14009U  Parallel Functional Programming Volume 2014/2015

Course information

Credit7,5 ECTS
LevelFull Degree Master
Duration1 block
Block 4
B (Mon 8-12 + Tues 13-17 + Fri 8-12)
Course capacityno limit
Continuing and further education
Study boardStudy Board of Mathematics and Computer Science
Contracting department
  • Department of Computer Science
Course responsible
  • Jost Berthold (8-676a77796d74716945696e33707a336970)
Saved on the 03-12-2014

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.

Learning Outcome



  • 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.

Teaching and learning methods
Lectures, in-class exercises, group work on programming and analysis assignments.
Academic qualifications
The course syllabus assumes basic knowledge and programming competences in Haskell and Erlang, which, at DIKU, can be acquired through ”Advanced programming”, or through self-study.
Sign up
Self Service at KUnet
Credit7,5 ECTS
Type of assessment
Written examination, 4 hours under invigilation
The 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 requirements3 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.
AidOnly certain aids allowed

The allowed aids are max. 2 sheets of hand-written or typed pre-written material (from any source).

Marking scale7-point grading scale
Censorship formNo external censorship
several internal examiners
Re-exam30 min oral examination, without preparation.
Criteria for exam assesment

see learning outcome

Practical exercises48
Study Groups66
Saved on the 03-12-2014