CS680 Project Ideas
Following are several ideas for Project 2. Some are directly related to content covered in class, some are not. This is not meant to be an exhaustive list, and is meant to inspire your creativity.
Extensions to a Distributed Data Backup Application
The goal of this project is to solve at least one of the problems left unsolved by Project 1. Following are several options:
- Apply your knowledge of peer-to-peer systems to implement an
test a distributed load balancing algorithm that eliminates the
bottleneck of the centralized load balancer. Compare your
algorithm to the algorithms implemented for Project 1 using the
same parameters and metrics.
- Implement and test an algorithm for performing data
recovery. For Project 1, the client never retrieved stored data
from the servers. In order to support recovery, you must
develop an algorithm for enabling the client to locate the
appropriate server from which it can recover a particular piece
of data. To test your algorithm, develop a new set of
parameters that allow you to simulate a client needing to
recover data. Measure how efficiently your algorithm recovers
data as well as the effect it has on the load on the
servers.
- Implement and test a mechanism for supporting fault
tolerance. Ensure that your backup application works in the
presence of server faults. This may require replicating data on
more than one server and modifying your load balancer to track
which servers are up at any given time. Measure the reliability
of your algorithm and its effect on the load of the
servers.
An Exploration of Availability Prediction Techniques for Mobile Systems
The goal of this project is to investigate techniques for
predicting availability in a network of mobile devices. Using
data collected from 13 laptops, the project will evaluate the
performance of techniques that attempt to predict when
particular devices will be available. Ultimately, the result of
this project will be a recommendation for which technique(s)
would be most useful in an application such as the peer-to-peer
data backup application described above.
A Simulator for Mobile Environments
The goal of this project is to implement a simulator that will
model energy usage in a network of mobile devices. The simulator
will be used to model predicted performance of the peer-to-peer
data backup application described above.
Personal File System
The goal of this project is to implement a personal distributed
file system. Suppose a user carries a collection of devices and each
device stores some collection of data files (e.g., emails, an
address book, or homework). The idea behind the personal file
system is to provide the user with an integrated view of all files
available on the system, and to enable to user to view any file
from any location. The first step in the project is to develop
and implement the basic architecture. There are also a number of
more challenging research questions involved such as how to cache
information, how to provide the best "quality of service" for the
user (e.g., minimize delay), and how to manage files in a
power-aware way.
A New P2P Search Algorithm
The goal of this project is to implement and test a new search
algorithm for peer-to-peer file sharing environments. One possible
algorithm would incorporate caching and push-based data delivery
to provide users with the facility to browse content
currently being downloaded. As the peer software receives search
requests, it caches the requests and presents them to the user as
catalog of available content. Extensions include additional
filters that attempt to identify the content in which the user
will be most interested.
A Lecture Interaction System
The goal of this project is to develop an application to enable
students to interact electronically with an instructor during a
lecture. For example, it may allow students to post questions
anonymously, indicate they do not understand a particular topic,
or for students to submit answers to a question posed by the
instructor. The instructor will have a view of of information
submitted by students, and may select certain comments and
solutions to display to the class. An additional feature would be
a participation tracker that enables the instructor to easily
track which students have participated in the class discussion and
will also randomly select participants when prompted. Many other
feature suggestions available upon request!
Automated Linked In for Researchers
The goal of this project is to provide an automated linked
in-style service that provides researchers with their degrees
of separation to other researchers. The project would involve
building a crawler to gather data about researchers. For example,
you might build a database of researchers that contains for each
researcher a list of his/her co-authors. Using this information,
a researcher can query the system to find out how they can contact
another researcher through co-authors. In other words,
Bob->Jane->Bill->Alice might indicate that Bob co-authored a paper
with Jane and Jane co-authored a paper with Bill and Bill
co-authored a paper with Alice. So, Bob can potentially be
introduced to Alice by contacting Jane.
Sami Rollins