Discusses advanced topics in modern computer systems architecture such as pipelined and superscalar processors, parallel computers (vector, SIMD, MIMD), multithreaded and dataflow architectures, cache and memory hierarchy, and system interconnect architectures. Also discusses relevant system software design issues such as shared memory and message-passing communication models, cache coherence and synchronization mechanisms, latency-hiding techniques, virtual memory management, program partitioning and scheduling. Examples are drawn from real systems. Prior undergraduate trainings in computer architecture are necessary.