This course provides an overview of high-performance computing (HPC), focusing on the fundamental principles and practical applications. Students will learn about the architecture of HPC systems, including processors, memory, storage, and networks. The course covers parallel programming techniques using MPI and OpenMP, performance analysis and optimization methods, and an introduction to ethical considerations in using HPC. By the end of the course, students will understand some families  of complex computational problems that can be solved using HPC.