Course focuses on the design, implementation, and theory of distributed systems. Follows ECE344 — Operating Systems. Lab work is done in Go.

Quick links:

  • Course page
  • Suggested textbooks are:
    • Distributed Systems, by Maarten van Steen and Andrew S. Tanenbaum
    • Distributed Systems notes and lectures by Tim Harris
    • Designing Data-Intensive Applications, by Martin Kleppmann

Concepts covered

Case studies

Labs

Lab notes

Lab 3:

Lab 4:

Tips

When I took this course, it was a new iteration (overhaul of curriculum, new professor). It was a little rough around the edges, but otherwise a good experience.

  • For labs 3/4 (Raft, key-value storage), it does not suffice to test once. It does not even suffice to test 10 or 20 times. Because Raft relies on probabilistic election timeouts, there will inevitably be a small edge case that you’ve missed. For this reason, you should be testing several hundred times.
    • For example, my initial 3A implementation failed 1/500 testing runs (for one test) because of a subtle bug relating to how my goroutines were spawned. My 3B implementation failed 1/50 testing runs (for one test).
    • That is to say, your implementation won’t be exhaustively correct unless you test this many times. This will help you out in the long-run — since the labs build on each other, this will expose any bugs from previous parts (even if you got 100%!) and it’s better to have a working solution than needing to backtrack.
    • For this reason, I recommend creating a testing script of your own to run the tests many times and report a success rate.
  • The labs’ RPC runtime mimics real-world networks. Just like real-world networks, the runtime can be exhausted if you send too many RPCs at once, and RPCs will begin to fail irrespective of what your implementation does.
  • There were very few prep resources for exams. I found:
    • Past ECE419 exams useful for clock questions. For consistency questions, they were good to take a look at, but are designed differently now (past questions were quite confusingly designed).
    • Past 6.824 exams useful for case study-related questions.