Are you interested in using Europe’s faster supercomputers (and getting ECTS credit points for doing so)? Would you like to learn how to write programs for parallel supercomputers, such as a Cray or a cluster of Graphics Processing Units? The course is designed to teach students how to program parallel computers to efficiently solve challenging problems in science and engineering, where very fast computers are required either to perform complex simulations or to analyze enormous datasets. It covers basic principles, architectures, and algorithms of parallel systems. The course is structured in four parts: (i) foundations of parallel systems, (ii) basic parallel algorithm, (iii) parallel programming, and (iv) parallel applications.