In this module, we study the use of High-Performance Computing systems, from accessing them to programming for them. We study some theory including Computer Architecture at the hardware level to some fundamentals of parallelism. We then go into practical parallelism using C on multicore systems using OpenMP and multiprocessor/distributed systems using MPI. We will also briefly study GPU programming using CUDA, as well as some emerging hardware architectures.