NDAK14009U Parallel Functional Programming (PFP)
Data-parallel programming models express parallelism declaratively (explicitly) by means of higher-order language constructs, whose rich semantics allow high-level reasoning for exploring the large space of strategies for efficiently mapping application's parallelism to hardware.
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 declarative 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 course will demonstrate the presented parallelisation strategies on applications from the machine-learning, image-processing and finance domains.
The lectures will provide an overview of approaches to parallel programming and give practical instructions to writing, testing, and optimising data-parallel 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 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 taken in
various languages, with particular focus on how high-level
description of parallelism may be mapped in a principled way to
high-performance hardware.
Skills to
- express a parallel computation in data-parallel paradigms
- write, modify, and test data-parallel programs, in different programming environments, targeting different architectures such as multi-core CPUs and GPGPUs
Competences to
- identify opportunities for using data-parallel programming to parallelise algorithms
- select a suitable programming language/dialect to implement a parallel algorithm on a given hardware platform
The course does not use a single textbook but instead provides tutorials and scientific papers available from the course pages.
Academic qualifications equivalent to a BSc degree is recommended.
- Category
- Hours
- Lectures
- 28
- Preparation
- 15
- Exercises
- 60
- Laboratory
- 14
- Project work
- 83
- Exam Preparation
- 5
- Exam
- 1
- Total
- 206
As an exchange, guest and credit student - click here!
Continuing Education - click here!
PhD’s can register for MSc-course by following the same procedure as credit-students, see link above.
- Credit
- 7,5 ECTS
- Type of assessment
- Continuous assessmentContinuous assessment based on 3-4 individual assignments and a group mini-project with individual oral defense (20-25 minutes).
The part-examinations must be individually approved. The final grade is based on an overall assessment. - Aid
- All aids allowed
- Marking scale
- 7-point grading scale
- Censorship form
- No external censorship
Several internal examiners
- Re-exam
Resubmission of assignments and mini-project and a 30 minutes oral examination without preparation in full course syllabus.
The part-examinations must be individually approved. The final grade is based on an overall assessment.
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 2
- Schedule
- C
- Course capacity
- No limit
- Course is also available as continuing and professional education
- Study board
- Study Board of Mathematics and Computer Science
Contracting department
- Department of Computer Science
Contracting faculty
- Faculty of Science
Course Coordinators
- Cosmin Eugen Oancea (cosmin.oancea@di.ku.dk)
Lecturers
Cosmin Oancea, Troels Henriksen