Parallel and Distributed Computing
Undergraduate course, Notre Dame University-Louaize, 2020
The programming part can be found here. Decomposition techniques, tasks and dependency graphs, parallel models. C++ thread model (threads, mutexes, condition-variables, barriers, tasks), C++17 execution policy, lock-free data structures, shared memory with openMP, distributed memory with MPI. CPU vs GPU, GPU programming with hands on experience using CUDA and Thrust.