CS 138: Syllabus
Syllabus
The syllabus, time requirements, grading policy, information about accommodations, and more can be found in our syllabus.
Grading
Your final grade for the course will be based on the following items:
- 50% Programming Projects (4)
- 10% Liteminer (lab1 is 5% of Liteminer (so 0.5% of total grade))
- 13.33% Tapestry (lab2 is 5% of Tapestry (so 0.66% of total grade))
- 13.33% Raft
- 13.33% PuddleStore
- 15% Homeworks (HW1+HW5: 3% (HW1 and HW5 are coupled with each other and both half of a homework grade), HW2: 3%, HW3: 3%, HW4:3%, HW6:3%)
- 10% Midterm
- 15% Final Exam
- 7% Post Lecture Quizzes
- 3% Course Participation
The Post Lecture Quizzes will be graded on correctness. You are allowed to missing 3 days Post Lecture Quizzes. We will use gradescope to collect these.
The Course Participation will be graded on participation -- so you get credits for both the right answer and the wrong answer. You are allowed to missing 3 days worth of participation points. For the synchronous section, this will administered using Top Hat during class. For the asynchronous section, we have a seperate Top Hat instance, you will be assigned questions after class and you have until the next class to complete them.
Note: initially we were planning to use Canvas for the PLQ and for the asynchronous-class participation. However, due some issues with canvas we have modified the setup. In particular, for PLQ we will use gradeschope. All class participation will go through Top Hat -- we have created different instance of Top Hat with different rules.
The written homework assignments will all be done individually. The programming programs will be completed in groups of two (2).
Textbook
You can follow the content of the course using Distributed Systems: Concepts and Design (5th Edition). We will indicate besides each lecture below which sections of the textbook correspond to the lecture.
Programming Help
The TAs have put together two very useful guides to get started with Go and with Git. Check them out below:
More links:
- A Tour of Go
- Effective Go
- Introduction to Asynchronous Programming
- Profiling Go Programs
- Checking Test Coverage in Go
Capstone
For those taking the course as a capstone, you will required to implement additional features on the following projects: Tapestry, Raft, AND Puddlestore projects. In particular, for each of the three projects, you will be given a set of optional features (one or more additional features) -- you will have to pick one to implement.
Schedule
Date | Topics | Recordings | Readings | Operation Stories |
---|---|---|---|---|
Thu 01/21 | L1 - Introduction to CS 138 |
[Recording] [.pdf] |
||
Tue 01/26 | L2 - D.S. Principles |
[Recording] [.pdf] |
(Required) Dist Intro Fallacies of Distributed Computing Code Snippets | |
Thu 01/28 | L3 - Networking |
[Recording] [.pdf] [Code] |
Amazon Cluster Expansion Bug | |
Tue 02/02 | L4 - Networking (RPC) |
[Recording] [.pdf] |
(Required:) RPC (Ch 5.3) | |
Thu 02/04 | L5 - Performance |
[Recording] [.pdf] |
(Optional) Mantri [OSDI'10] | MongoDB Data Sharding Bug |
Tue 02/09 | L6 - Load-Balancing/Consistent hashing |
[Recording] [.pdf] |
(Optional) Slicer Maglev Consistent Hashing | |
Thu 02/11 | No Class (Attend GearUp Sessions) |
|||
Tue 02/16 | No Class (Long Weekend) |
|||
Thu 02/18 | L7 - Consistent hashing |
[Recording] [.pdf] |
(Required) DHT/P2P Ch 10.1,10.3,10.4 Tapestry (Optional) Chord; |
|
Tue 02/23 | L8 - Distributed hash tables (Tapestry) |
[Recording] [.pdf] |
(Required) Tapestry | |
Thu 02/25 | L9 - Distributed hash tables (Tapestry) |
[Recording] [.pdf] |
(Required) Tapestry | |
Tue 03/02 | L10 - Tapestry |
[Recording] [.pdf] |
(Required) Tapestry | |
Thu 03/04 | L11 - Time (Logical Clocks, Global State (Distributed Snapshots)) |
[Recording] [.pdf] |
(Required) Chapter 14.1, 14.2, 14.4, 14.5 | Cloudflare Time Bug |
Tue 03/09 | L12 - Time (Global State (Distributed Snapshots)) + Replication (Active V. Passive) |
[Recording] [.pdf] |
(Required) Chapter 14.1, 14.2, 14.4, 14.5, Chapter 18 (Optional) Consensus in the Cloud | |
Thu 03/11 | L13 - Consistency (Passive AKA Raft) |
[Recording] [.pdf] |
(Required) Chapter 18, Raft (Passive Replication); (Optional) Formal verification of Raft; detection of livelock in raft | |
Tue 03/16 | L14 - Consistency (Raft, Lazy Replication) |
[Recording] [.pdf] |
Liveness bug in production, CloudFlare issues | |
Thu 03/18 | L15 - Consistency (CAP Theorem, Lazy Replication, Analyzing Consensus) |
[Recording] [.pdf] |
||
Tue 03/23 | L16 - Consistency (CAP Theorem, Lazy Replication, Analyzing Consensus) |
[Recording] [.pdf] |
(Required) Lazy Replication | |
Thu 03/25 | L17 - Practical Consensus |
[Recording] [.pdf] |
(Required) FB's Zookeeper (Optional) Google's Chubby |
Zookper Bug at Pinterest Zookeeper @ Robinhood |
Tue 03/30 | L18 - Distributed Transactions |
[Recording] [.pdf] |
(Required) 17.1, 17.2, 17.3.0,17.3.1, 17.4, 15.1.0 | |
Thu 04/01 | L19 - Distributed Transactions/Distributed File Systems |
[Recording] [.pdf] |
||
Tue 04/06 | L20 - Industrial Storage Systems |
[Recording] [.pdf] |
(Required) AWS's DynamoDB FB's Cassandra | |
Thu 04/08 | L21 - Industrial Storage Systems Continued |
[Recording] [.pdf] |
(Optional) Kafka GFS Colossus |
|
Tue 04/13 | L22 - Industrial Storage Systems Continued |
[Recording] [.pdf] |
||
Thu 04/15 | Review Session |
[Recording] [.pdf] |
||
Wed 04/21 | Final Due |