- A theoretical introduction to parallel algorithms
- Lock-free algorithms and data structures
- Design patterns in parallel programming
- Parallelization in programing languages (C++, OpenMP, Threading Building Blocks)
- Distributed computing in clusters (MPI)
- Computing on coprocessors (OpenCL, Intel Xeon Phi)
Multi-core processors yield the possibility making parallel computations on standard computers. Implementing an application using parallelisms is a nontrivial matter.
The goals of the course are an theoretical and practical introduction to contemporary software technologies used for parallel programming, practically debugging parallel programs, and practically tuning parallel program performance.