6.824 - Spring 2014

6.824 Lab 5: Final Project

Piazza idea discussions due: Thursday, March 20, 2014
Proposals due: Friday, April 4, 2014
Code and write-up due: Friday, May 9, 2014 (11:59pm)
Presentations: Tuesday, May 13, 2014 and Thursday, May 15, 2014 (in class)

Introduction

In this lab, you will work on a final project of your own choice. Unlike in previous labs, you will work in groups of 3-4 for the final project. You will be required to turn in both your code and a short write-up describing the design and implementation of your project, and to make a short in-class presentation about your work. We will post your write-up and code on the web site after the end of the semester, unless you explicitly talk to us about why you want to keep yours confidential.

The primary requirement is that your project be something interesting. Your project should also have something to do with distributed systems, but that's relatively easy, and it's much more important for your project to be interesting.

We encourage students to choose any project idea that you might think is interesting. If you are not sure, we provide you with two kinds of potential projects. First, we present a reasonably well-defined starting point for your project -- basically, a default project. Second, we give a list of half-baked ideas that we think could turn into an interesting project, but we haven't given them too much thought.

We encourage final projects that leverage multiple classes you might be taking, or that involve other research or projects you are already working on (e.g., MEng and AUP projects).

Deliverables

There are four concrete steps to the final project, as follows:

Form a group. Decide on the project you would like to work on, and post short summary of your idea (one to two paragraphs) on Piazza; use the hw5 tag/folder on Piazza.

Discuss ideas with others in comments on their Piazza posting. Use these postings to help find other students interested in similar ideas for forming a group. Course staff will provide feedback on project ideas on Piazza; if you'd like more detailed feedback, come chat with us in person.

Project proposal. Discuss your proposed idea with course staff over the next week, before the proposal deadline, to flesh out the exact problem you will be addressing, how you will go about doing it, and what tools you might need in the process. By the proposal deadline, you must submit a one-to-two-page proposal describing: your group members list, the problem you want to address, how you plan to address it, and what are you proposing to specifically design and implement.

Submit your proposal to https://ydmao.scripts.mit.edu:444/6.824/handin.py

Write-up and code. Write a document describing the design and implementation of your project, and turn it in along with your project's code by the final deadline. The document should be about 3 pages of text that helps us understand what problem you solved, and what your code does. The code and writeups will be posted online after the end of the semester.

Project presentation. Prepare a short in-class presentation about the work that you have done for your final project. We will provide a projector that you can use to demonstrate your project.

A well-defined starting point

Your goal for the default project is to build a persistent, fault-tolerant, high-performance key/value store, using lab 4 as a starting point. This means:

Half-baked project ideas

Here's a list of ideas to get you started thinking -- but you should feel free to pursue your own ideas.