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:

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