The purpose of the course is to give an in-depth exposition of the core concepts of high performance computer architecture. The primary theme of the course is a quantitative approach to computer design and analysis that uses empirical observations of programs, experiments, and simulation as its tools. We will cover major component subsystems of high performance computers: pipelining, instruction level parallelism, and memory hierarchies. Unfortunately, the field covers so many important and interesting topics that we could not discuss them all in one semester. For example, we have to leave out topics such as parallel and distributed architecture for CS5102 High Performance Computer Systems.