The students will learn hardware and software issues in modern distributed systems, including distributed architecture, naming, synchronization, consistency and replication, fault tolerance, security, and distributed file systems. Examples will be given from current popular distributed systems such as peer-to-peer systems.