Effizientes paralleles C++

Application

Since the previous knowledge required for this course is difficult to express in terms of prerequisite courses, places are allocated via an application process.

For your application, an informal e-mail (<150 words) is sufficient. This e-mail should give a short overview of your experience with C++, as well as a short description of your knowledge in the theoretical basics of algorithmics. Please send your e-mail to epcpp@ira.uni-karlsruhe.de.

Currently, we are at capacity and unfortunately cannot accept any more applications.

Contents

In this course, students implement various programming assignments in C++. The main focus is the design of efficient code and the evaluation of that code in extensive experiments. The assignments are motivated by scientific work in the area of algorithm engineering. They cover complex algorithms as well as advanced data structures, techniques such as templates (compile time optimizations) and parallelization.

Goals

Students

  • can apply the methods of algorithm engineering to implement and evaluate given algorithmic problems and data structures in C++.
  • recognize elements leading to inefficient code and can, if possible, replace them with more efficient constructs.
  • can apply the presented techniques for parallelization and know how to produce thread-safe code.
  • are familiar with the options in the standard library and can use them where appropriate.
  • can evaluate their code in terms of correctness and performance, and can furthermore present and analyze their results.
Language German/English
Workload
  • ~ 10h physical/online presence
  • ~ 10h review/evaluation of solutions (including preparation)
  • ~ 15h design of individual assignment
  • ~ 25h presentation of individual assignment
  • ~ 120h work on assignments (implementation and evaluation)