Distributed Systems

A distributed system is one in which the failure of a computer you didn’t even know existed can render your own computer unusable.
— Leslie Lamport

Any significant web application quickly becomes a distributed system.

This is both good news and bad news: distributed systems can help provide fault tolerance and low latency global applications, but at the cost of strong consistency guarantees. Without a solid understanding of distributed systems principles, it is hard to achieve the benefits of distributed systems without succumbing to the hazards.

Our course focuses on practical considerations for professional software engineers. We will cover enough theory to help students make good choices when working on or with distributed systems.


  1. Introduction to distributed systems
  2. Communication models and patterns
  3. Consensus: Paxos and Raft
  4. Naming and name services
  5. Synchronization, time and logical clocks
  6. Replication and fault tolerance in depth
  7. Peer-to-peer systems
  8. Distributed file systems

Projects and exercises

Among other exercises, you will implement Raft (a simplified alternative to Paxos) and use your implementation to solve subsequent problems.

Assumed knowledge

This course assumes a strong grasp of operating systems and computer networking.

Schedule and price

This course is next scheduled to run in July 2017, for 24 total hours of classes over evenings and weekends.

Apply now Still have questions? Contact us.
1141 Howard St
San Francisco, California
© 2016 Bradfield School of Computer Science