MIT 6.5840 Distributed Systems
MIT's graduate course 6.5840 (formerly 6.824) Distributed Systems, published openly with its schedule, lecture notes, the reading list of foundational papers and the Go programming labs, where you build MapReduce, Raft and a sharded, fault tolerant key value store. Demanding and free. For engineers who want to truly understand replication and consensus rather than recite them.
Course
System Design
MIT
A full semester
Advanced
Free
What the course is
6.5840 (it used to be numbered 6.824) is MIT's graduate level distributed systems course. The Spring 2026 edition's site publishes the schedule, lecture notes, paper readings, lab handouts and FAQs. Anyone can follow along; only enrolled MIT students get grading and office hours.
The reading list is a tour of the papers behind modern infrastructure: MapReduce, the Google File System, Raft, ZooKeeper, chain replication, Spanner, FaRM, practical Byzantine fault tolerance and Bitcoin, among others.
The labs are the point
The labs are written in Go and build on each other:
- Lab 1: a MapReduce implementation.
- Lab 2: a key value server.
- Lab 3: the Raft consensus algorithm, in several parts (leader election, log replication, persistence, snapshots).
- Lab 4: a fault tolerant key value service on top of your Raft.
- Lab 5: a sharded key value store.
The provided test suites deliberately kill servers, drop and reorder messages and partition the network. Getting Raft to pass reliably, hundreds of times in a row, teaches more about distributed systems than any amount of reading. Many engineers describe it as the point where consensus stopped feeling like magic.
How hard it is and how long it takes
It is a real graduate course. MIT's stated prerequisites are its computer systems courses (6.1910 and one of 6.1800 or 6.1810) or equivalent, plus substantial programming experience. In practice you should be comfortable with concurrency, threads and debugging code that fails intermittently.
MIT students do the course over a semester (the 2026 labs ran from February to May). Self learners working part time should expect a similar or longer span. Lab 3 alone commonly takes weeks.
How to self study it
- Learn enough Go first. A tour of Go and some practice with goroutines, channels and mutexes is enough.
- Read the paper before each lecture, then the lecture notes. The FAQ pages for each paper answer common questions.
- Do the labs in order and run the tests many times. A test that passes once is not passing.
- Add logging early. Structured, per server logs are the only way to debug Raft.
- Do not look up solutions. MIT asks students not to publish their lab code, and copying defeats the purpose.
Recorded lectures from earlier years are available online from past editions, and the current site has notes for every session.
Is it worth it?
If you want to work on databases, infrastructure, storage or platform engineering, yes. Nothing free comes close. If you only need to hold your own in a system design conversation, this is far more than you need: a book like Understanding Distributed Systems or Kleppmann's Cambridge lectures will get you there faster.
Common questions
Can I use a language other than Go? Not with the provided test harness. The labs are Go only.
Do I need to read every paper? The Raft, GFS and MapReduce papers are the essentials; the rest deepen understanding.
Is there a certificate? No. This is open course material, not a MOOC.
Best for: engineers moving into infrastructure or storage work, and anyone who wants depth in distributed systems and is prepared to put in weeks of effort.
Ready to start?
Opens on MIT in a new tab.
Stuck on something specific?
Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.
Follow along
New writing, resources and project ideas land here first.