Distributed Computing Principles: 
A graduate-level introduction to the characterization of distributed computing, the basic models of distributed systems, the essential problems, and algorithm design technologies in a distributed environment. The course will mainly cover inter-process communication, remote invocation, indirect communication, operating system support, distributed objects and components, web services, security, distributed file systems, naming services, and case study of distributed systems. With the core principle study and practice of the course project, we expect the students to apply the studied knowledge to distributed system design, implementation, and problem-solving.
Slides are as below (the matrials are partially derived from Prof Rajkumar Buyya and Prof. George Couloris):
0. Course Requirements pdf 
1. Introduction: Distributed Computing Concepts demo pdf
2. Inter-process Communication
demo pdf 
3. Multi-thread Programming
demo pdf 
4. Distributed System Models pdf
5. Operating System Architecture and Distributed Syetems 
demo pdf
6. Distributed Objects Programming - Remote Invocation demo pdf
7. Naming Services demo 
8. Security of Distributed Computing demo pdf