Project 3 - Choose Your Own Adventure

Due - December 17, 2009

For this project, you will propose and implement an extension to your FileSync application. The lecture period on November 25 will be devoted to discussion of your proposal. By November 25, you will need to submit a 1-2 paragraph description of your extension. I will respond promptly with any comments about your proposal.  You are strongly encouraged to meet with the professor early and often to discuss your ideas.

For this project, you may choose to work in teams of 2. I will expect teams to complete roughly 2 times more work than individuals, and each team member will receive a grade based on my assessment of the individual contributions.

Your final grade will be based upon your proposal, the functionality of your final submission, the design of your final submission, the degree of difficulty of your proposed project, and your final demonstration. Submissions that demonstrate a low level of difficulty and/or few new features will be graded accordingly.  Upon reading your proposal I will give you feedback on the level of difficulty of the project.

Following are several ideas for Project 3. This is not meant to be an exhaustive list, and is meant to inspire your creativity. Keep in mind that I will expect the amount of work required for Project 3 to exceed that of Project 2. 

Load Distribution

Implement and compare several load-aware strategies for selecting nodes where replicas will be placed.  For example, you might consider a round-robin approach, a random approach, an approach that keeps track of the amount of space available for backup on each node, and an approach that considers the uptime of each node.  Experimentally compare the approaches using metrics such as how often restoration is successful and submit a writeup.


Replace the current strategy you use to maintain a list of peers with a DHT such as CAN.  Use the DHT to help you determine where data should be backed up.

Bit Torrent-style Backup

Back up your files in chunks a la BitTorrent.  To restore, download chunks in parallel from several nodes.

Integration of other Web Services

Integrate one or more web services in addition to the Google Docs service. You will need to come up with (good!) justification as to why the chosen service enhances the service provided by your application.

SOAP Interface

Provide a SOAP interface to your service.  Compare the SOAP-based implementation to the REST-based implementation.

Use Another Platform

Reimplement your application using another platform, such as Django or Ruby on Rails. Compare the features of the RESTlet architecture to the platform you choose.

Android/Mobile Devices

Develop and integrate a strategy for integrating other types of devices into your system.  You might consider using the Android platform.

Security and Authentication

Implement a security mechanism to enable devices to authenticate themselves. Encrypt content before sending over the network.

Due 3:30PM - Wednesday November 25, 2009

  1. Email me a 1-2 paragraph description of your proposed extension. I will respond promptly with any comments about your proposal.

Due  - December 17, 2009

  1. You must demonstrate your completed program by December 17, 2009 at 12 noon.  Demo slots will be filled on a first-come first-served basis.  Please plan accordingly.

Note: No portion of your code may be copied from any other source including another text book, a web page, or another student (current or former). You must provide citations for any sources you have used in designing and implementing your program.