Semester Project

Tom Kelliher, CS 318

Jan. 28, 2002

This project description is adapted from the following:




You will find it useful to visit these sites and poke around.

General Description and Goal

The goal of the semester project is to implement an application of a database system. This includes:

  1. Finding an application for which a database system would be required.

  2. Modeling the domain of the application, and defining the application functionalities.

  3. Designing and implementing the schema.

  4. Populating the database.

  5. Building the application.

Projects will be done in groups of 3--4 students. Students are encouraged to pick an application domain that excites them, provided it has a nontrivial database component. See the suggestions below.

What Should be in the Project?

Every project should illustrate the following features:

  1. Conceptual design of the domain.

  2. Schema design for the application.

  3. Sophisticated querying.

  4. Database updates.

  5. Use of multiple views.

A web front end to the application, using PHP, is expected.

Guidelines for the Semester Project

Here are some guidelines that should help you make project decisions. Of the following, the first three guidelines are the most important.

  1. Effective use: Try to make effective use of as much of the course material as possible. As we progress through this course, try to incorporate what we learn into your projects. For example, use joins, aggregates, indexes, triggers, etc.

  2. Completeness: The project must be complete and stable enough for a good demonstration at the end of the course. This requirement is very important. If you are unable to give a reasonable demonstration, your project grade will suffer greatly.

  3. Database size: All project databases must be of nontrivial size. You may interpret nontrivial based on your application. However, (1) there should be at least 10 nontrivial relations; and (2) the total number of attributes times the total number of tuples should be at least 5000. (These are guidelines only; if you feel your application warrants exceptions, come see me during office hours.)

  4. Practicality: The application you build should be of practical use to a sizeable community (at least in the foreseeable future).

  5. Innovation: The more innovative ideas you include in your project, the more credit you will receive.

  6. Miscellany: In addition to the above, your project grade will take into account factors such as teamwork, overall effort, timeliness, answers to questions about the project, justification of design decisions, and intermediate and final project reports.


There are several milestones we will follow to help you with assessing progress:

  1. Groups formed: Feb. 1.

  2. Proposals: Feb. 8.

  3. E/R design: Feb. 22.

  4. Formal specification: Mar. 8.

  5. Sample end to end application: Apr. 5.

  6. Project demonstration, outside of class by appointment: week of Apr. 29--May 2.

  7. Final project report due: May 3.

Each group is permitted two ``slide'' days, although the groups formed, the project demonstration, and the final project report due date are hard deadlines --- no slides permitted. Otherwise, 10% of the final project grade will be deducted for each day a milestone is late. Deliverables are due by 5:00 PM on the due date.

Groups Decided

One member from each group must send an e-mail to Send mail to kelliher AT DOMAIN with:

  1. The members of the group.
  2. The group name.
  3. The URL of the group web page. Note: all documents posted to the group web page must be readable using Netscape running on any OS platform. This rules out posting MS Word documents, for example. You may post PDF documents.
Be sure to consider the following in selecting your partners:
  1. Project interests.
  2. Working style.
  3. Goals.
  4. Target grade.
  5. Availability outside of class.
  6. Strengths and weaknesses.
Do not be shy about interviewing potential partners --- you are forming a short-term business venture. For the purpose of creating the formal specification, I would suggest that each group contain at least one person from the software engineering class of fall 2000.


Students must put on their group web pages (this should only be a page or less long):

  1. Project description: what is the domain, what aspects of the domain will be modeled by the database.

  2. What are the application specifications? I.e., what functionality will the system provide?
  3. What is the role of each project member in the project?

  4. Schedule: what are the landmarks in your work.

  5. Other, more specific comments if appropriate.

The proposals are meant to get you to start thinking about the project, get into groups and create a plan. All group proposals must be unique. Send an e-mail containing the URL of your proposal to the entire class ( once your group has posted its completed proposal.

E/R Design

Each group must post to their project web site:

  1. E/R diagrams.

  2. Relational schemas.

  3. A written description detailing exactly what data their database will contain.

Formal Specification

Each group must post to their web site:

  1. What data they will have in their final application.

    What tables are you creating, containing what pieces of information each. (That means revisiting your design and figuring out for good what tables you need to create, taking into account the principles of good design and your desired functionality.)

  2. What constraints exist and how they are modeled.

  3. What functionality the final application will have; each project should have at least one cool feature. (The tasks each user of the system (including the system administrators) will be able to perform with your application.)

  4. Updated division of labor.

Sample End-to-End Application

Each group must post to their project web site:

  1. A couple of screen shots of their application running a simple query: getting the data from the database, and putting it into a simple version of the final application of the project.

Completed Project

Each group must have a demo of their project. By May 3, each group must have on their web site in its final form (no working after the deadline):

  1. A short description of the finished project.

  2. A description of how this differed from their formal specifications, if at all.

  3. Documentation for their application. The documentation should address the person who will be installing and maintaining the application. (That is, the system administrator, not the end user.)

Also by May 3, each student is required to email me with the following information:
  1. How long did you work on the project?
  2. What did you like the best about the project?
  3. What did you like the least about the project?
  4. What helped you learn the best in the project?
  5. What distracted from your learning in the project?
  6. If you could change the way that the project was organized, what would you change?
Answering these brief questions will help me make future projects better.

Project Ideas

The following ideas are merely suggestions --- you have to flesh out your specific application. Also see:

  1. Movies and reviews database.

  2. Online store (books, CDs, mp3s etc).
    1. Support browsing, searching, shopping cart, personalization.

    2. Model and include product information such as hierarchy of book topics, or music genres.

  3. Apartments.
    1. Model apartments and their properties, areas of town and their various properties (e.g., bus lines, crime rate distance from various landmarks).

    2. Offer apartments for rent, browse apartments, query using specific criteria.

  4. Library DB.
    1. Search collections, check status.

    2. Integrate with the Goucher Library DB (hard).

  5. Job classifieds database.
    1. Openings, contacts, references, reviews, requirements, bidding, ...

  6. Database of web sites.
    1. Model web sites: topic, URL, organization to which they belong, other sites they point to, reviews of the site, quality, etc.

    2. Update capability: New sites, new reviews of sites.

    3. Browse and search capabilities.

    4. Personalization.

    See for a partial inspiration.

  7. Room scheduler.

  8. Historical stock price data.
    1. retrieve, parse, and store stock price information from *public domain* sources over time.

    2. implement browsing and querying that can be used to discover trends, records, trivia.

  9. Goucher administrative database.

    Simple idea, you have to come up with interesting functionality. GNAV, perhaps?

  10. Personal Information Manager (PIM)
    1. contacts, addresses, phones, ...

    2. appointments.

    3. diary

    4. to-do list

Thomas P. Kelliher
Mon Jan 28 08:50:00 EST 2002
Tom Kelliher