Advanced course in computer science on the theory, algorithms, and techniques of parallel and distributed computing systems. Focus is on principles and algorithms and somewhat less on practical systems construction, even if we will have plenty occasion to look at things like code, machine architecture, memory organization, and performance. The goals of the course are:
- To understand and account for problems, models, limitations, concepts and algorithms in the area of message passing and shared memory concurrency, and to apply this understanding to example systems and algorithms
- To analyze parallel and distributed algorithms for correctness, performance, reliability, fault tolerance, and security.