Learn CS

6.824 Distributed Systems



6.824 is a core 12-unit graduate subject with lectures, readings, programming labs, an optional project, a mid-term exam, and a final exam. It will present abstractions and implementation techniques for engineering distributed systems. Major topics include fault tolerance, replication, and consistency. Much of the class consists of studying and discussing case studies of distributed systems.

Prerequisites: 6.004 and one of 6.033 or 6.828, or equaivalent.


1IntroductionnotevideoMapReduce (2004)Lab 1: MapReduce
2RPC and Threadsnotevideokv.govideoOnline Go tutorialFAQQuestion
3GFSnotevideoGFS (2003)FAQQuestionLab 2: Raft
4Primary-Backup ReplicationnotevideoFault-Tolerant Virtual Machines (2010)FAQQuestion
5Go, Threads, and Raftnotevideocode samplesThe Go Memory ModelQuestion
6Fault Tolerance: Raft (1)notevideoRaft (extended) (2014), to end of Section 5FAQQuestion
7Fault Tolerance: Raft (2)notevideoRaft (extended) (2014), Section 7 to end (but not Section 6)FAQQuestion
8ZookeepernotevideoZooKeeper (2010)FAQQuestion
9More Replication, CRAQnotevideoCRAQ (2009)FAQQuestionLab 3: KV Raft
10Cloud Replicated DB, AuroranotevideoAurora (2017)FAQQuestion
11Cache Consistency: FrangipaninotevideoFrangipaniFAQQuestion
12Distributed Transactionsnotevideo6.033 Chapter 9FAQQuestionProject proposalsLab 4: Sharded KV
13SpannernotevideoSpanner (2012)FAQQuestion
14Optimistic Concurrency ControlnotevideoFaRM (2015)FAQQuestion
15Big Data: SparknotevideoSpark (2012)FAQQuestion
16Cache Consistency: Memcached at FacebooknotevideoMemcached at Facebook (2013)FAQQuestion
17Causal Consistency, COPSnotevideoCOPS (2011)Question
18Fork Consistency, Certificate TransparencynotevideoCertificate TransparencyAlso ThisAnd ThisFAQQuestion
19BitcoinnotevideoBitcoin (2008)summaryFAQQuestion
20BlockstacknotevideoBlockStack (2017)FAQQuestion
21AnalogicFS experience papernotevideoQuestion