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
  2. Communication and Encoding
  3. Replication
  4. Partitioning
  5. Transactions
  6. Consistency and Consensus
  7. Batch Processing
  8. Stream Processing

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

Distributed Systems will next run 5:00pm-6:30pm Mondays and Thursdays, 29 Jul - 5 Sep 2019. The total price is $1800.

Apply now Still have questions? Contact us.

This was one of the more challenging courses I took at Bradfield. Distributed systems can be a huge can of worms, so I very much appreciated the instructors’ focus on practical situations and applications of distributed systems. This helped me develop an intuition for which tools I would use for which tasks, which is much more valuable than the ability to recite the properties of different systems.

Tiger Shen, Software Engineer at Braintree Tiger Shen, Software Engineer at Braintree

Distributed systems present developers with a series of challenging problems. By digging into various distributed systems algorithms, this course gives you an excellent framework for how to approach the problems you’re likely to face in the real world.

James Vanneman, Software Engineer at Microsoft James Vanneman, Software Engineer at Microsoft