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