Course Project Information

Project Overview

As a team of five 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 held the last week of the quarter. While the final result is one integrated program, each team member’s work is to be maintained as separate file(s). If this is not possible, clearly document each function including the name of the developer.

Past Topics

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

  • An "iTunes" of song titles, albums, and mp3s
  • A "Yelp" style restaurant review application for the San Jose area
  • A "Rate My Professor" for De Anza College
  • A car database - both new and used cars
  • A Dungeons and Dragons application to track scores and information about players
  • A database of statistics for NBA players
  • A movie title database
  • A star gazer application that contains information about the position of stars in the sky.

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)

- List (has a sub-menu)

- List unsorted data

- List data sorted by the primary key

- List data sorted by the secondary key

- Write data to a file

- Statistics (When this option is selected, your program must display at least 3 different statistics about the data)

- Quit

At the end of the program, the file is to be automatically written to a disk 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.

Your grade for the project will be a factor of the team score weighted by a peer evaluation.

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 – come up with something else). During the first team meeting, every student will bring his proposal, then the team will assign a preference number to each proposal (1 – the first choice, etc.); the final decision will be made by the instructor (no two teams should process the same data). 
  2. Participate in designing a solution to the problem: Data Diagrams, Structure Charts, UML Diagram
  3. Participate in writing the project reports. 
  4. Provide relevant test cases for the final presentation. 
  5. Individually test his/her part of the program (as much as possible). This implies writing test drivers (code that will not be included in the final project, but it will be used to test parts of the project).
  6. 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. 
  7. Turn in his/her part of the project on the scheduled date. 
  8. Work with the team coordinator and other members in the team to integrate his/her part of the code. 
  9. Prepare for and participate during his/her team presentation. 
  10. Actively attend all of the presentation sessions. (Ask questions/provide answers). 
  11. Write the peer evaluation.

Project Reports

Five reports are required. The due dates will be announced in class, as well as written on the course schedule.

Peer Evaluation

Each member of the team is to rate the contribution of the other team members using the Peer Evaluation Form. These evaluation forms are to be turned in individually with each project report. There will be two (2) peer evaluations in total. 

These peer evaluations are an opportunity for any team member who is not pulling his or her weight to make improvements. Therefore, the score for the first peer evaluation will count towards one quarter (1/4) of each team member's score, while the second peer evaluation will count towards three quarters (3/4) of each team member's score.

Any member who does not complete a peer evaluation will receive a five (5) points deduction from his/her score for the project, two and a half (2.5) for each missing evaluation. 

Note that you are not to rate yourself. 

These evaluations will be used to determine a tentative score for each individual on the project. The instructor, however, is responsible for marking the final determination of each person’s grade on the project and will use the teams’ score only as one input in the grading process. See the Project Score section below for more information.

Here is a link to the peer evaluation form that will be used for both peer evaluations:

Project Score

A team score will be calculated as shown below.

Completeness (40%). The project contains all of the required units and functionality along with the required documentation. Failure to use separate files will result in a five (5) points penalty. Each programmer should have one source file (and maybe a header file too).

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

Reports (20%). All Reports are complete and well-written.

Presentation (10%).

A tentative individual grade will be determined: by multiplying the project score by an average rating factor and using a score factor as shown below. After the individual’s tentative score, up or down adjustments may be made based on individual performance as observed in the presentations or based on the individual’s program code and documentation.

Average Peer Rating

Score Factor

16 – 20


12 – 15


10 – 12










Personal Score = Project Score x Score Factor

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 hashed array, build a binary search tree with the same key as the hash table’s key and a second BST for the secondary key.

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

Draw a Data Structure Diagram to show the hash table of buckets and the two BSTs (make sure to show how data are shared). Update this diagram depending on the variation of the project you have (i.e. number of students in your team).

Provide a menu of options for users as described above.

Suggested Team Assignments

Each member of the team must write at least one unit of code. If the team is small, team members may have to write multiple units.

Team Member 1: Pro Team Coordinator: Data structure design coordination, main(), Integration, Testing, Project presentation coordination, making sure reports submitted on time.

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

Team Member 3: Hash Table Whiz: Hash function, Collision resolution functions, Insert, Delete, Search.

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

Team Member 5: File I/O Ace: Load hash table and BSTs, Save to file, Destroy BSTs, Destroy Hash, Re-hashing: – Optional and only for teams of 4 or 5 students: when load factor is 75%, allocate another hash table (2 * actual size, and choose the next prime number), then traverse the hash table and hash each item into the new table using the same hash function and collision resolution method, and destroy the old hash table.

Project Reports and Evaluation Forms

The following reports are a required part of the course project:

Schedule of Due Dates

1. Report 1: Project Proposal and Team Member Document
    Hard copy due on Tuesday, April 19
    Note: One document per team required.

2. Report 2: Requirements Analysis and High-level Design
    Hard copy due in class on Thursday, May 5
    Note: One Requirements Analysis Document per team required.

3. Report 3: Low-Level Design + Peer Evaluation 1
    Hard copy of Low-Level Design Document due in class on Thursday, May 26
    Soft Copy of Peer Evaluation 1 due on Catalyst before class on Thursday, May 26
    Note: One Low-Level Design Document per team required, one peer evaluation per team member required.

4. Report 4: Test Plan
    Hard copy due in class on Thursday, June 2
    Note: One Test Plan Document per team required 

5. Report 5: Walk-through and Test Results + (Peer Evaluation 2 <-- changed to be due on Final Exam date Tues June 21)
    Hard copy due in class on Tuesday, June 14
    Hard copy of Peer Evaluation 2 due on Catalyst before class on Tuesday, June 14
    Note: One Walk-through and Test Results Document per team required + one peer evaluation per team member required.

6. Project Presentation
    Presentation in class on Tuesday, June 14 or Thursday, June 16

7. Final Project Submission
    Due on Catalyst by Thursday, June 16 by midnight
    Note: All members of the team must submit the final project on Catalyst.


  • At the end of the quarter, you will need to present the final version of your project to the class as part of a 20 minute presentation.
  • This presentation will occur during the last week of the quarter.
  • Each team member will need to speak for at least 2 minutes during the presentation to receive credit for the presentation.
  • Your presentation 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. In other words, define your topic.

Slide 4
In the fourth slide, you will need to give an overview of your data set, where you found it and what are the fields contained in the data set.

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 diagrams that you created in your project reports. You may update the UML diagrams if your data structures have changed since submitting the reports.

Slide 7 or 8
In the next slide, list the results from your walk-throughs. What errors did you notice and what feedback did you get from your participants? Did you make any changes since completing 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 statistics, as well as any special features you would like to show off.

Final Slide
In the final slide, thank the audience and ask for questions.


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?