Program Overview
Program Overview
The University of Copenhagen offers a course in Data Parallel Programming (DPP), which focuses on deterministic programming models that are easy for humans to reason about, yet possible to be compiled to efficient code.
Course Description
The aim of the course is to introduce the principles and practice of parallel programming in a declarative programming setting. The course covers topics such as compilation techniques for nested parallel programs, locality optimizations, supporting low-level data parallel programming, and optimization frameworks aimed at imperative loops with affine indexing.
Learning Outcome
The course aims to provide students with:
- Knowledge of the difference between concurrency and parallelism, and between data parallelism and task parallelism
- Strategies for optimizing parallelism and locality, programming patterns
- 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
- Skills to write, modify, optimize, 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 parallelize algorithms
- Competences to select a suitable programming language/dialect to implement a parallel algorithm on a given hardware platform
Literature
The course does not use a single textbook but instead provides tutorials and scientific papers available from the course pages.
Recommended Academic Qualifications
The course syllabus assumes basic knowledge and programming competences in a functional programming language, which can be acquired through "Advanced programming" or through self-study. Academic qualifications equivalent to a BSc degree are recommended.
Teaching and Learning Methods
The course includes lectures, in-class exercises, group work on programming and analysis assignments.
Remarks
The course is equivalent to Parallel Functional Programming (PFP) NDAK14009U. It is not allowed to pass PFP and take Data Parallel Programming (DPP).
Workload
The course workload is as follows:
- Lectures: 28 hours
- Preparation: 15 hours
- Exercises: 60 hours
- Laboratory: 14 hours
- Project work: 83 hours
- Exam Preparation: 5 hours
- Exam: 1 hour
- Total: 206 hours
Exam
The exam is a continuous assessment based on 3-4 individual assignments (40% of the final grade) and a group mini-project with individual oral defense (60% of the final grade). The two exams must be individually approved. The final grade is based on an overall assessment.
Course Information
- Language: English
- Course code: NDAK21006U
- Credit: 7.5 ECTS
- Level: Full Degree Master
- Duration: 1 block
- Placement: Block 2
- Schedule: C
Study Board
The study board for this course is the Study Board of Mathematics and Computer Science.
Contracting Department
The contracting department for this course is the Department of Computer Science.
Contracting Faculty
The contracting faculty for this course is the Faculty of Science.
Course Coordinators
The course coordinator for this course is Cosmin Eugen Oancea.
Lecturers
The lecturers for this course are Cosmin Oancea and Troels Henriksen.
