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

Author

Publisher

Year

Price


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, November 22, then I will place you on a team.
  • Note that the team numbering has no significance for this project.
  • This quarter, as there are 45 people registered in the class, we will have 5 teams of 6 people and 3 teams of 5 people, for a total of 8 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 "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 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)

- List (has a sub-menu)

- List unsorted data (hash table)

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

- List 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 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 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 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 above.



Suggested Team Assignment


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, 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: Create user interface. Connect menu of options to the data structures.


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



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:



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:

Visibility

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 add in the middle - use powerpoint on ATC lab computers instead)

Walk-Throughs

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).



Presentation

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)
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 and not found 
    • Find and display elements using the secondary key (all matches)
      • Show element found and 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.

 
1
 
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.

 
1
 
Slide 3
 
Your third slide must give an overview or brief summary of what your chosen topic is. In other words, define your topic.

 
1
 
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, e.g. title, author, isbn, year, price

 
1
 
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.


 
3
 
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.


5
 
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.

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

 
1

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

 
1
 
Professionalism
 
Is the presentation delivered in a practiced and professional manner?

 
1