COMP689 deals with the major recent developments in distributed systems technology. It explains the principles of distributed systems such as communication, naming, synchronization, replication, fault tolerance, and security using examples and case studies. It covers architectures in distributed systems, reflecting the progress that has been made on organizing distributed systems, and new topics such as peer-to-peer computing, sensor networks, web services, grid computing, virtualization, cloud computing and its roots in distributed systems mechanisms, and self-management of distributed systems. The course illustrates design concepts for each topic with concept-oriented assignments and a small high-level programming assignment. Students complete a term project on the design and implementation of a real distributed system.