Course Project Information

Project Overview

As a team of five-six programmers, you will assist in the implementation of a data processing system. The application data are of your own design with the requirement that each record in the system must contain a unique key (it must be a string), a secondary key (allow duplicates), and at least three non-key fields. For instance, a Book class could have the following member variables:

ISBN – unique key

Title – secondary key





Each member of the team is to code one or more functional areas of the project. When complete, the individual components will be integrated into one program, which will be demonstrated in a project presentation that will be due by video on the last day of the quarter.

Team Sign Up

  • Sign up on a team here. If you do not sign up by Friday, May 29 at midnight, then I will place you on a team.
  • Note that the team numbering has no significance for this project.
  • This quarter, as there are 50 people registered in the class, we will have 5 teams of 6 people and 4 teams of 5 people, for a total of 9 teams.

Past Topics

Here are some topics from past quarters to help get you thinking. However, you must choose a different topic from the ones below.

  • An "iTunes" of song titles, albums, and mp3s
  • A "Yelp" style restaurant review application
  • A mock "Rate My Professor" database
  • A car database - both new and used cars
  • A database of statistics for players on a sports team
  • A movie or song database - no movies or songs as topics
  • A star gazer application that contains information about the position of stars in the sky.
  • An "online" store front selling products
Additionally, a book database or store front is off limits.

Menu Requirements

Your project must display the following options for the user. Any missing menu option will lower the completeness score by at least 10% or one letter grade (see more grading information below).

- Add new data

- Delete data

- Search (has a sub-menu)

- Find and display one element using the primary key

- Find and display elements using the secondary key (all matches)

- Print (has a sub-menu)

- Print unsorted data (hash table)

- Print data sorted by the primary key (BST 1)

- Print data sorted by the secondary key (BST 2)

- Write data to a file

- Quit

At the end of the program, the file is to be automatically written to a text file. This is in addition to the menu write file option. The file names do not have to be the same as the input file name, but the file format must be the same as the input file format so that it can be read back into the program.

In addition to writing and debugging code, each member of the team will:

  1. Give suggestions for the application data: think about original/interesting/educational data that matches the program requirements (you may not use the Book example or the other example topics listed above – come up with something else).
  2. Participate in designing a solution to the problem: UML Diagrams, sketches, pseudocode, etc
  3. Provide relevant test cases for the walk-throughs and final presentation. 
  4. Individually test his/her part of the program (as much as possible). This implies writing test files (code that will not be included in the final project, but it will be used to test parts of the project).
  5. Participate in all of the team meetings. Come prepared to the meetings. If a team member must be absent from a meeting, he/she should inform the other team members in advance; also he/she could keep in touch by phone or email. 
  6. Submit the project on the scheduled date. 
  7. Work with the team coordinator and other members in the team to integrate his/her part of the code. 
  8. Prepare for and participate during his/her team presentation. 
  9. Actively attend all of the presentation sessions. (Ask questions/provide answers). 

Project Score

A team score will be calculated as shown below.

Completeness (60%). The project contains all of the required data structures and functionality.

Accuracy (30%). The system demonstration runs without errors. Also, the system loads and executes without errors in a customer (instructor) test.

Presentation (10%). An approximately 15 minute video presentation and demonstration of the project

Note that all team-members will receive the same score on the project. Therefore, please help each other to complete the project.

Required Project Specifications

The system’s data structure is to contain a hashed table of at least 25 records read from a file.

Collisions will be resolved using separate chaining within each bucket.

In addition to the hash table, build a binary search tree with the same primary key as the hash table’s primary key and a second BST that stores data sorted by the secondary key.

The primary key must uniquely identify each element, whereas the secondary key must not uniquely identify each element.

For instance, in the Book example, one BST and the hash table will be built using ISBN, the unique, primary key, and the other BST will be built using author, the secondary key.

Draw a UML Class Diagram to show all classes used in your project and how they interrelate. Please see section below on UML Class Diagrams.

Provide a menu of options for users as described earlier - note that you must offer the exact menu options as shown above.

Suggested Team Assignment

Each member of the team must write at least one unit of code, except the Presentation Guru. If the team is small, team members may have to write multiple units and take multiple roles.

Team Member 1: Pro Team Coordinator: Data structure design coordination, main(), Integration, Testing Ensure project and presentation submitted on time

Team Member 2: BST Algorithms Specialist: Implement BST Insert, Delete, Print, Search.

Team Member 3: Hash Table Whiz: Hash Insert, Delete, Search.

Team Member 4: Screen Output Expert: Creates the user interface. Connect menu of options to the data structures.

Team Member 5: File I/O Ace: Gather data for input to program. Reading from and writing to a file

Team Member 6: Presentation Guru: Coordinates the team presentation, creates the UML diagrams, oversees the walk-throughs, builds the power point presentation, keeps track that each menu option is displayed during the presentation to ensure that team members receive full credit on the project.

UML Class Diagrams

As part of your presentation, you will be required to show a UML class diagram representing your project.
  • Please have one box for each class used in your project
  • The box should be titled with the name of the class, bolded and centered in the upper compartment
  • Variables should be defined in the middle compartment of the box and marked as private (-). They should be left justified.
  • Methods should be defined in the bottom compartment of the box and marked as public (+) or private (-). They should be left justified.
  • Connectors should be used between boxes to demonstrate the interrelationships among the classes.
You can use the below diagram as a model for your project:

A second example:

UML Class Diagram for Twice Sold Tales Lab

In the diagram above, classes are represented with boxes that contain three compartments:

  • The top compartment contains the name of the class. The name is displayed in bold and centered, and the first letter is capitalized (just like the name of a class should be in your project).
  • The middle compartment contains the attributes (member variables) of the class. They are left-aligned and the first letter is lowercase.
  • The bottom compartment contains the operations the class can execute (the member methods). They are also left-aligned and the first letter is lowercase.
There are different types of connectors between the boxes:


To specify the visibility of a class member (i.e. any variable or method), these notations must be placed before the member's name:

+ Public
- Private
# Protected
/ Derived (can be combined with one of the others)
~ Package

Source and More Information

Video (Ignore the advertisement in the middle - use powerpoint or similar instead)

Recommended by a classmate for creating UML diagrams:


Select 2 friends to test your project. Give these friends precise goals to accomplish, for example: “Scenario 1: Create a new account, log in, and search for a book.” List the three scenarios you asked your test participants to complete here.

Scenario 1:

Scenario 2:

Scenario 3:

List the feedback that you received from each of your participants.

Feedback from Participant 1:

Feedback from Participant 2:

List any problems you noted while the participants were testing your project or any changes you wanted to make after observing the tests:

Please present this information as part of the the project presentation (described below).


At the end of the quarter, you will need to present the final version of your project to the instructor.

This presentation and demonstration will occur via video and should be no longer than 15 minutes.

Suggested software for screen capture to record your video:
  • Camtasia (free 30 day trial)
  • QuickTime (comes standard with a Mac)
  • Zoom (free version available)
The video should have two parts:
  1. A PowerPoint presentation (or similar) as described below
  2. A demonstration of your project, where each team member shows the functionality of his or her portion of the project.
Each team member should speak as part of the presentation.
When discussing the UML diagrams, the teammate responsible for that portion of the project should explain the diagram for his or her component.

Please show a continuous recording of the project demo.

Please do not edit out any component of the project or the results of entering a key.
  • Please do not break the project into pieces and record each component separately.
As no extensions are allowed, make sure that you at least have a running version of your project when you record the video (even if it is incomplete) or you will receive a 0 on your project (no exceptions!).

Please read all directions below to maximize your presentation score.

Important: Your project will also be evaluated by the instructor during this video presentation. If a component is not included on the video, I will assume that it does not work or was not completed, and will not bother to test it. Please be careful to demonstrate all components of the project, as your grade will depend on the thoroughness of your presentation. Use the checklist below as you are recording to ensure that you demonstrate all aspects of the project:

  • Add new data
  • Delete data
  • Search (has a sub-menu)
    • Find and display one element using the primary key
      • Show element found
      • Show element not found
    • Find and display elements using the secondary key (all matches)
      • Show duplicate elements found
      • Show not found
  • Display (has sub-menu)
    • Display unsorted data (hash table)
    • Display data sorted by the primary key (BST 1)
    • Display data sorted by the secondary key (BST 2)
  • Write data to a file and show the output in the file
  • Quit

I will be using the above checklist as I am watching your video. Please do not skip any item on the checklist or you will receive no credit for that component of your project

The presentation itself will be graded on a 20 point scale as follows:

 Requirement Description Point Value
Slide 1

Your first slide must display your topic and the full names of all presenters.

At this point in the presentation, each team member should introduce him or herself

And, one person should state the topic of the presentation.

Slide 2
Your second slide must provide an outline of what you will cover in your presentation. This outline must be a list in either bullet point or numerical form.

One member of the team should briefly go over what will be discussed during the presentation.

Slide 3
Your third slide must give an overview or brief summary of what your chosen topic is, by doing the following:
1. defining your topic
- what it is
2. explaining why you chose this topic

Slide 4
In the fourth slide, you will need to give an overview of your data set, including
1. where you found it (give me a link to a website)
2. what are the fields contained in the data set, e.g. title, author, isbn, year, price?

Slide 5-6 or 7
In the next 2-3 slides, give an overview of the data structures used in your presentation. You must present these by using the UML class diagrams that you created. You may also show me some of your code.

Important: In this part of the presentation, you need to describe in detail your solution to the requirement of the two BSTs

Slide 7 or 8
In the next slide, list the results from your Walk-Throughs. You must present the information as described in the above section on Walk-Throughs, including the 3 scenarios you provided to your participants, the feedback of the two participants, any errors you noted while observing the participants testing your code, and any changes you made to your project as a result of the Walk-Throughs.

Live Demo of Project
During the live demo, you should display the main functionality of your system, including: Insertion, deletion, search, display, and writing to a file, as well as any special features you would like to show off.

Important: You will earn the bulk of your project grade in this part of the presentation. Therefore I would recommend that one person keep track of which features have been demo'd - using the above checklist - while the presentation is happening. Don't end the live demo unless you are 100% certain you have shown off all project features.

Final Slide
In the final slide, thank the audience


Presentation Aesthetics
Is your presentation laid out nicely with lots of images and clear, readable text?

Is the presentation delivered in a practiced and professional manner?