Problem/project

The fourth problem set is open-ended: Build a distributed system—most likely using or extending your Paxos—that can survive a failure.

Your work is due at the end of reading period, May 6; but as long as you check in with me in person on or before that day and demonstrate good progress on a project we agree is worthwhile, you can have additional time (until May 13).

Requirements

Example project directions

Some of these projects can be executed entirely in simulation, whereas others involve real-world measurement and deployment. Real-world deployment is inherently time consuming, so plan ahead for that. I will expect simulation-only projects to be tested stringently (e.g., many seeds, interesting failure models); deployed projects can be tested in simpler ways (e.g., kill a process).

Each project is tagged with an ambition score from 1 to 5. A score of 3 corresponds roughly to the 15-hour calibration above. 1 and 2 are lighter-weight; 4 and 5 are more ambitious than the baseline and are good candidates for group projects or for students who want to go deeper.

Infrastructure

Many of you will want to build on top of your existing code, and I’ll release updates to the Cotamer library to support your projects. Already the handout code has been extended with HTTP support, allowing you to build a Web client or server. In the next days I’ll add HTTPS support. If something else would be useful, let me know!

Intermediate deadline

Come to class Monday 4/27 having turned in a one-paragraph description of your proposed project on Canvas. We’ll discuss them.