The course aims to teach students the fundamentals of parallel computing. Starting with MPI (Message Passing Interface), the course takes learners from basic concepts of ring communication through to complex applications like distributed matrix multiplication and stencil solutions for the heat equation, laying a solid groundwork in distributed computing. It then continues with an introduction to OpenMP, a standard for shared-memory parallel programming, enabling participants to explore different paradigms of parallel computing within a single course. A significant emphasis is placed on scaling and performance measurement, ensuring that students not only learn how to implement parallel algorithms but also how to evaluate their efficiency and scalability. By the end of the course, attendees will have acquired essential skills in parallel computing, ready to apply their knowledge to optimize performance in a variety of scientific contexts.
