Project Ideas
I have listed a number of possible project ideas. By no means are you
limited by these ideas; in fact, I encourage you to come up with some
of your own. Even if you do choose to go with one of these, keep in
mind they're only starting points. Each of the ideas on this list
will require considerable flushing out and refining in order to turn
it into a reasonable project proposal. Many of them are slanted
toward projects in wireless and virtual machine technology, which, not
coincidently, are closely related to the work going on in my research
group.
I realize each of you are in different stages of your graduate
career, and are looking for different things out of a course project.
Hence, I've divided the list into two categories. All of the ideas
below likely could result in a suitable class project. While the
first few would probably be fun to do, those of you with aspirations
of possibly publishing your work might think about tackling things in
the latter category.
Some of the projects require access to resources in my research
group. Plese contact me if you're interesting in persuing one of them
so I can make sure we have enough resources to go around.
Cute hacks:
- Develop a 1xEVDO/1xRTT proxy/compensator that grows TCP
congestion windows artificially to mitigate effects of long RTT and
other useful tricks. Advanced version would do parallel 1xEVDO to
802.11 bridge as part of it.
- Modern VMMs can migrate VM images between VMs. Build a system to
migrate a VM to physical machine (and perhaps back again) using
translate-mode Xen (i.e., consistent memory mappings... main issue is
I/O state and interfacing with resume logic on physical
machines).
- An automatic spam detector and filter. Right now, everybody has
to design their own filters and install them. Build a system that
runs at an MTA and uses the fact that it sees email flowing to lots of
people to automatically detect SPAM and filter it.
- Implement simple policies for saving power in our cluster. Most
of the machines are idle, turn off during idle periods. Could use OS
hibernation, or, since we're using VMs, Xen save and restore.
Research-grade:
- Google for a distributed file system. Google is great, but I
still get stuck running 'grep' on my home directories all over the
place to find one of my files. Figure out how to build an index of a
distributed file system and search it efficiently.
- Add gossip-based reconciliation to LBFS. LBFS is almost exactly
what you want, except that it has a strict client-server relationship.
Consider a Bayou-like approach.
- Combine approximate replication with TCP nice-like erasure coded
streaming to support entirely background content distribution.
- Suppose you mount a NFS volume remotely and do
computation on the data. At a certain point it becomes clear that
you're doing a lot of computation on it and data shipping is the
bottleneck. Then checkpoint the VM and ship it to where the data is
stored to compute on it locally (need to translate the NFS mount into
a local mount...). when done, ship the VM back.
- Extend any of the papers we've read to fix problems they left
danging.