Distributed Systems

Next running

17 Feb - 26 Mar 2020
5:00pm-6:30pm Mon/Thu


San Francisco



Apply for this course

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
  2. Background knowledge review
  3. Communication and encoding
  4. Replication
  5. Partitioning
  6. Transactions
  7. Consistency
  8. Distributed transactions and consensus
  9. Leaderless distributed databases
  10. Batch processing
  11. Stream processing
  12. Revision

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.

Available sessions

17 Feb - 26 Mar 2020
5:00pm-6:30pm Mon/Thu
San Francisco

This course will next be taught by

Oz Nova

Oz is the lead instructor at Bradfield, and most frequently teaches Algorithms and Data Structures, Computer Architecture, Databases, Operating Systems and Distributed Systems. Prior to co-founding Bradfield, he worked for a decade as a software engineer and engineering manager, including as CTO and Co-founder of Topguest (acquired by Switchfly) and Vida.com.