The final lab assignment for the class is to undertake a mini research
project of your choice in a group of 1-3 people.
Your project should be guided by the following deadlines:
- By Wednesday, February 21 you should form a
project team of 1-3 people (preferably 2) and email the course staff
to let us know with whom you will be working.
- Before Friday, February 23 you should
schedule a meeting of your team with the course staff to
discuss your proposed project. Once your proposal has been approved,
send the course staff a short (1 paragraph) description of what you want to do,
which might be posted on the web site so everybody knows what the
different projects are.
Please schedule your meeting sooner rather than later, in case your
team needs to iterate on the proposal. Note, in particular, that it's
fine to meet with us if you don't have a concrete plan yet, as we can
suggest some things for you to look into.
Note: If you want to combine your project with your research or with
work for another class, this is in general fine, but please let us
know at the time of the proposal.
- By Thursday, March 22 you must email the
course staff a paper
describing and evaluating your project. The paper should be no more
than 10 pages in at least 11-point font. We may post the papers on the
class web site.
- At 12:30pm Friday, March 23, you will
present your project to the class and demo what you have done. Your
combined talk and demo should take no more than 20 minutes. You must
also submit the source code to your project at this time. Note that
this is a hard deadline, since we have to reserve a room for the
presentations and submit grades for people.
Here are some ideas you might be interested in for projects. This
list is by no means exhaustive.
- Build a network object system for C++.
- Build something like Porcupine that addresses some of the
- Build a large file store, like GFS, and possibly using RAID
- Build a scalable virtual disk like
- Build a simplified version of a synchronization service like
- Build something like MogileFS
but instead of having a centralized database, replicate the DB using Paxos.
- Build a scalable web cache using consistent hashing.
- Build a highly-available, replicated DNS server that uses Paxos to
ensure consistency of updates.