The primary objective is to learn the fundamental principles underlying distributed systems, and apply some of this knowledge in developing a real system in a course project (such as a networked multimedia system or a groupware system with built-in mechanisms for supporting high availability). Topics include: models of distributed systems, distributed transactions, distributed filesystems, infrastructures for building distributed systems, distributed algorithms, cryptography and distributed security, an overview of distributed multimedia applications, systems and networking support for distributed multimedia systems, and distributed real-time systems. An intensive hands-on semester-long group project will be carried out to complement the concepts taught in the course. Pre-requisites: 18-349 or 15-410 (or 412).