- Principles of Parallel Programming, Calvin Lyn and Lawrence Snyder, Pearson
- Parallel Programming for Multicore and Cluster Systems, Thomas Dauber and Gudula Rünger, Springer
- Programming Massively Parallel Processors, David B. Kirk and Wen-mei W. Hwu, Morgan Kaufmann
- An introduction to Parallel Programming, Peter Pacheco, Morgan Kaufmann
Prerequisites
Knowledge of C/C++ and Java.
Teaching Methods
Lectures (80%) and lab activity (20%)
Type of Assessment
- Mid-term paper and presentation (30% grade)
- Final programming project (70% grade)
Course program
Types of parallelism (instructions, transactions,task, thread, memory, .)
Parallelism models (SIMD, MIMD, SPMD, .)
CPUs and parallel architectures
Design Patterns for parallel computing (Master/Worker, Message passing)
Parallelization strategies, task parallelism, data parallelism, work sharing
Parallel programming in C/C++ (C++11) and Java
Concurrent data structures