This course covers the basics of high performance computing (HPC). This includes an introduction to processor and HPC system architectures, optimization and performance modeling, and parallel programming on shared and distributed memory parallel computers. Necessary prerequisites are a working knowledge about UNIX/Linux environments and at least one programming language out of the set {C, C++, Fortran}. We do not have the time to teach UNIX or programming basics in this course.