Computers have made new applications possible but they often also require higher computational performance. Fortunately, performance has doubled every eighteen months over the last decades because of technology shrinkage (higher clock frequency) and through advances in computer architecture.
Because of the enormous heat at the high frequencies that microprocessors are operating at today, further increases in frequency is difficult. Therefore, the main approach to increase computational performance is through new forms of parallelism. Industry has responded to this technology trend by integrating multiple processors on a chip - multi-core processors.
This course focuses on principles for the design of parallel computers - architectures as well as programming models - which is the mainstream computing technology for the next ten years.