Assignments

There are several pre-class reading assignments and multiple homework assignments. These are mostly meant as reading enforcers. There are four programming projects (the first split in two parts) and a final exam.

All assignments (prompts, submission links, rubrics) are posted on Canvas.


Pre-class reading

Before most classes, you will be asked to read a designated research paper — at minimum, the abstract, introduction, and conclusion — to get a high-level sense of the work.

You’ll submit two things:

  1. A one-sentence summary capturing the core problem + contribution
  2. A question or point of confusion you’d like discussed in class

Responses are due before class and help guide discussion and surface common sticking points.


Homework assignments

Homework dives deeper into the material, often revisiting a paper you’ve already read or building on ideas discussed in lecture.

Assignments will ask you to:

  • identify strengths/weaknesses
  • reason through “what if” variants
  • connect mechanisms to outcomes
  • explain tradeoffs clearly (not just recite definitions)

Projects

There are four projects, including a MapReduce library and a replicated state machine protocol.

  • Teams of 2–3 students (1 is not allowed).
  • Projects are implemented in Go.

Go is garbage-collected and has built-in coroutines (goroutines) and channels, making it well suited for distributed systems. Some useful packages: