CIS 550 Course Project

More details on the course project are available here.


The course project will be assigned to teams of approximately 3 students. There are two alternative projects for this course, one of which is more applications-oriented (building upon database technology), and one of which is more systems-oriented (working under the covers).

Option 1: pMail

One option is to build a Web-based email system, along the lines of MS Hotmail or, perhaps more precisely, Google's GMail. You will manage multiple users' email folders, allow them to send and receive email, and allow them to search for email by keyword. This will involve a number of components:

Additionally, there are many opportunities to add extra capabilities such as "word stemming" (looking for different forms of a keyword, e.g., run vs. ran vs. running), ranking of answers (as with Google), shared folders, different methods of browsing emails, message threads, etc.

Option 2:  P2P Database Synchronization

An alternative project, recommended for students who want to know more about what goes on "under the covers" of a data management system, is to build a peer-to-peer system for "synchronizing" multiple copies of a database.

If a database gets copied to multiple sites, each of which independently makes changes to it, how can we quickly and effectively "sync up" the different databases so they all look the same?

One solution, which doesn't require everyone to sync at the same time, is to use a peer-to-peer system substrate, such as Pastry or Chord, to distribute the data across a network -- where each peer gets part of every table. Individuals download a copy of the entire table, make changes, and then send these changes out to the different peers in the P2P network. Each peer synchronizes part of the database and sends its data back to the individual.

This project is somewhat more open-ended, and the first step would be to learn the Pastry Java APIs (which take care of most details of peer-to-peer distribution), then to build a database interface over Pastry. This database might be relational or it could even be an XML database.


More detailed information on both projects will be made available as the semester progresses.