CPSC 304, Final Project Submission
The
goal of the final project is to build on what you have accomplished in
the other project checkpoints. This document will show both what you
are expected to turn in, and what functionality you should have for
your project to be successful. There are three components to the final project:Please read the following carefully to make sure that you don't miss anything. One piece of advice: start early;
it is hard to imagine that you will be able to pull this off if you
start only a few days before the deadline. Do one operation at a time
and use the interactive SQL interface to first make sure that you have
the right SQL query. Finally, you can implement the embedded SQL part
with the GUI.Note that while you can see what we expect you to show us at the demo in the notes below, it is not enough
to hard code the application to just run that set of specific queries -
we will be looking at your files as well to show that you've
implemented the whole application that you have said that you have.
One person from each project team must turn the following into the handin directory "project-final" by 11:59 pm on the due date - the full command is "handin cs304 project-final", which assumes that
the files that you are submitting are in a directory called
~/cs304/project-final. To do so, you'll need to get an account on the CS ugrad machines.- A cover page
- All the code used in the application
- A script that could be used to create all tables and data in the database such as the one here
- A short description of what the project accomplished
- A
description of how your final schema differed from the schema you
turned in. If the final schema differed, why? Note that turning in a
final schema that's different from what you planned is fine, we just
want to know what changed and why.
- A list of the SQL queries used
- List
all functional dependencies that are applicable to the table (including
the ones involving the primary key). For each functional dependency,
briefly describe its meaning in English.
Test
your system with enough data to make sure that it works well. To
evaluate your project better, we will ask each group to give a demo
which will be scheduled for 20 minutes. Because
it is important for us to verify that each team member can explain the
project, all team members are required to attend the demo, and should
be prepared to present and answer questions Presentation sign up will happen later.During
the demo, you will first show that no part of the code has been changed
since the deadline. Then you will compile the code (if using Java) and
run the script to create and populate the tables. The TA will use your
interface to test each of the aforementioned operations. Prepare a
demonstration plan to make sure that the entire demo will finish in 20
minutes. You should also bring a printout of the relation instances.
During the demo, we will ask to see the following:
- (1 point) Selection and projection query: pick
one query of this category and provide an interface for the user to
specify the selection condition and the attributes to be returned.
- (1 point) Join query: pick one query of this category and provide an interface for the user to choose this query.
- (1 point) Division query: pick one query of this category and provide an interface for the user to choose this query.
- (1 point) Aggregation query: pick one query that requires the use of aggregation (min, max, average, or count are all fine).
- (2 points) Nested aggregation with group-by: pick
one query that finds the average for each group and then finds either
the minimum or maximum across all those averages. Provide an interface
for the user to specify whether the minimum or maximum is requested.
- (1 point) Delete operation: implement
a cascade-on-delete situation. Provide an interface for the user to
specify some input for the deletion operation. Some input values
would fail the cascade specification but others would successfully
follow the cascade specification. Provide an interface for the user to
display the relation instance after the operation.
- (1 point) Update operation: implement
a constraint using the check statement. Provide an interface for the
user to specify some input for the update operation. Some input values
would successfully satisfy a constraint while others would fail.
Provide an interface for the user to display the relation relation
after the operation.Note that MySQL 5.5 does not support the Check
constraint. If your team is using MySQL 5.5, keep the check in the SQL
statement, but actually do the check at the application level (and
comment it in the code).
- (2 points) Graphical user interface: create
an easy to use GUI that allows the users to execute all the above
operations and transactions. Use the menu facility provided by the
graphics environment you use to define appropriate menus and submenus.
Make sure to design your interface in such a way that all the error
messages appear in separate pop-up boxes, or in a designated area of
the main window, so that they do not interfere with the other
activities. Whenever user input is requested, make sure that there is
sufficient type checking.
- (3 points) Extra features: Create
unique features that your application supports. You can really be
creative about this. Some examples are using Bootstrap to prettify your
UI, implementing Triggers and Privileges in the database, using any
cloud-based databases. See the marking scheme for more examples and the
breakdown.
GUIs
normally require a lot of time and multiple tries to get them right. We
expect you to produce a simple but adequate interface. You should not
spend a lot of time on the interface itself. You should concentrate on
the coding of the functionality of your project rather than the GUI.
The goal of the project is to give you some experience with SQL and
JDBC.
Here are a few tips on how to do well in your (project) demo:
Please note that while your project demo is often the
grade that each member will receive for your project grade, grades may
be modified if there are problems with the code or if there are
individuals who have not participated well within their groups.The individual reports
By
the due date, each group member must submit their own individual report
using the handin directory "individual-project-reports". The full
command is "handin cs304 individual-project-reports", which assumes
that the files that you are submitting are in a directory called
~/cs304/individual-project-reports. To do so, you'll need to get an account on the CS ugrad machines.Please note that this is not group work, and must be done individually. please
put your name and your group's name on the top of everything that you
submit. Please also submit this report in plain text. The project report should contain the answers to the following questions:
- Your assessment of the group's final achievement:
Did you fall short of expectations? Did you exceed your initial
predictions? How well did you work together? What areas could have been
improved? Were group roles and responsibilities clearly defined?
- Individual Assessment:
what were your contributions in terms of code, design, group moral,
etc. Specifically, what did you do for the group and for yourself? What
aspects, if any, of your effort and and work are you most proud of?
What aspects, if any, are most in need of improvement? What do you
think your fellow teammembers will say about your achievements and
efforts?
- Assessment of Individuals: for each group
member, evaluate performance, effort, accomplishments on a scale of 1-5
where 1 is "met them once, I think, they weren't around" and 5 is
"captain, CEO, chief-architect, cheer-leader, all around good person
and the project would have been significantly less without them". It's
possible that everyone in the group could get a 5, or that everyone
could get a 1. Please be sure to justify, briefly, your
assessment/evaluation. Be sure to assess/evaluate yourself too. This assessment will be confidential
- Assessment of the project:
- Roughly how much time did you spend on the project?
- What did you like the best about the project?
- What did you like the least about the project?
- What helped you learn the best in the project?
- If you could change the way that the project was organized, what would you change?