This course introduces the fundamentals of parallel computing with a focus on practical scientific applications. Using MPI, students progress from basic communication patterns to distributed algorithms such as matrix multiplication and stencil methods for the heat equation, with additional examples including the implementation of multi-dimensional FFTs.
OpenMP is then presented to illustrate shared-memory programming, enabling participants to compare different parallel paradigms.
Emphasis is placed on scaling and performance measurement so that students learn not only how to implement parallel algorithms but also how to evaluate their efficiency and scalability.