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
I realize each of you are in different stages of your graduate
career, and are looking for different things out of a course project.
While all of the ideas below likely could result in a suitable class
project, they vary in their ambitiousness and scope. Those of you
with aspirations of possibly publishing your work might think about
tackling something more open-ended.
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.
- Add group membership and proper view-change functionality to our
Rate Limiting system to gracefully handle limiter failure
and network partitioning.
- Implement and extend the channel assignment procedure from our
SoftSpeak system. In particular, gracefully handle situations where
VoIP clients dynamically arrive and depart at neighboring access points, yet cannot hear each other directly.
- Extend our Address
Hiding Protocol system to support multiple,
coordinated proxies. In particular, communicate about the used
addresses and key rotation schedules in a synchronized fashion.
- Instrument the Hadoop scheduler to determine the bottlenecks in
Map/Reduce jobs. In particular, identify jobs where CPU, disk, or
network bandwidth are limiting factors, and implement extensions to the
scheduler to improve performance in these problematic cases.
- 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.
- 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.
- 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.
- The XL
routing algorithm provides a glimpse at the interplay
between network structure and the communication
complexity of routing. However we do not yet have a deep understanding
of this connection. We know that in realistic
networks with short detours it is possible to suppress some
updates, and in cases of the same link failing repeatedly, it is
possible to do asymptotically better than the
current approach of complete flooding. Beyond these special cases,
however, the question of which networks
require complete flooding is open.
- Extend any of the papers we've read to fix problems they left