The parallel computing systems course examines modern parallel and distributed systems design, engineering and evaluation. Topics include parallel systems design concepts, architectural evolution of parallel systems, technological driving forces of parallel systems, programming algorithms and models, communication primitives, programming and compilation techniques, multiprogramming workloads and methodology, latency avoidance techniques, cache-coherency, protocols, directories, and memory consistency models, message passing protocols, storage management, and deadlock, network interface, protection, events, active messages, latency tolerance techniques, pre-fetching, multithreading, dynamic instruction scheduling, and software techniques, network design and synchronization.