Students
Tuition Fee
Not Available
Start Date
Not Available
Medium of studying
Not Available
Duration
Not Available
Details
Program Details
Degree
Masters
Major
Computer Science | Data Science | Software Engineering
Area of study
Information and Communication Technologies
Course Language
English
About Program

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.


See More