Kursussøgning, efter- og videreuddannelse – Københavns Universitet

Videresend til en ven Resize Print Bookmark and Share

Kursussøgning, efter- og videreuddannelse

Parallel Functional Programming (PFP)

Practical information
Study year 2016/2017
Block 2
Programme level Full Degree Master
Course responsible
  • Martin Elsman (4-7c70747b4f73783d7a843d737a)
  • Department of Computer Science
Course number: NDAK14009U

Course content

Parallel functional programming emphasizes the declarative nature of functional programming for making explicit, and for utilizing, the rich possibilities for parallelising computations.

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 setting. The course covers both multi-core parallel programming (for MIMD CPU programming) and many-core parallel programming (as for SIMD GPGPU programming).

The course includes 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 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

Knowledge of

  • the difference between the concepts of concurrency and parallelism, and between data parallelism and task parallelism
  • well-known parallelisation strategies, programming patterns, and program skeletons
  • different approaches to parallelism in functional programming languages, with particular focus on parallel extensions of sequential functional languages, and functional combinators for data-parallel bulk operations 


Skills to

  • express a parallel computation in the functional paradigm
  • write, modify, and test parallel functional programs, in different programming environments, targeting different architectures such as multi-core CPUs and GPGPUs


Competences to

  • identify opportunities for using functional programming to parallelise algorithms
  • select a suitable programming language/dialect to implement a parallel algorithm on a given hardware platform

Recommended prerequisites

The course syllabus assumes basic knowledge and programming competences in Haskell (or another functional programming language), which, at DIKU, can be acquired through ”Advanced programming”, or through self-study.

Sign up

As an exchange, guest and credit student - click here!

Continuing Education - click   here!


Study Board of Mathematics and Computer Science

Course type

Single subject courses (day)


1 block


---- SKEMA LINK ----

Teaching and learning methods

Lectures, in-class exercises, group work on programming and analysis assignments.


No limit




The course does not use a single textbook, but instead provides tutorials and scientific papers available from the course pages.


Category Hours
Lectures 28
Preparation 50
Exercises 15
Guidance 2
Exam 1
Exam Preparation 10
Project work 100
English 206


Type of assessment

Continuous assessment
Continuous evaluation based on 3-4 individual assignments and a group mini-project with individual oral defence.


All aids allowed

Marking scale

7-point grading scale

Criteria for exam assessment

see learning outcome

Censorship form

No external censorship
several internal examiners


Resubmission of assignments and/or mini-project + 30 min oral examination without preparation in full course syllabus.

Mere information om kurset
Er du BA- eller KA-studerende?
Er du bachelor- eller kandidat-studerende, så find dette kursus i kursusbasen for studerende:

Kursusinformation for indskrevne studerende