CS 462 - Semester Project Information

Description

During the course of the semester, you will be expected to complete a project involving the creation of a database-related system. You will be provided a MySQL database account and web space that will be JSP and PHP enabled on CS servers. The project will entail the design of a database, with all accompanying evidence of its good design, along with a front-end application that will interface with the database through record gathering, inserting, deleting, etc. The project can either be done individually, or with a partner, depending on your availability to work with others. The project must be complex enough so that it is not a trivial exercise, but cannot be so complex as to take longer than one month of effort.
Project Assignment

This can be either an individual or team project for teams up to three members. Teams will be expected to do more than individuals and will be graded accordingly. The objective is to design, implement, populate, test, and document a database of your choosing. The database can be for a situation of your choosing. The project should not be trivial, nor should it be so ambitions that you cannot complete it in a month's time.

Your project will consist of:
  • A database that you create in MySQL (all groups will set up their database on our MySQL server) that is populated with relevant data; and
  • A well-designed application to interface with your database - this can be a stand-alone or web application - that is relevant to the "world" that you created your database for;
You will be submitting a document that will include the following:
  • Requirements Document (including a complete description of the "world" to be modeled in your database with a discussion of who might use your database);
  • Explanation of design decisions that you made in creating your application (i.e. why you choose the type of app you did, why that language, if your database should be secure, did you secure it and how, anything interesting or relevant, etc.);
  • A description of your testing procedures for both the database and application;
  • An E-R diagram;
  • Database schema including integrity constraints;
  • Proof that your database is in BCNF, 3-NF, or other normal form;
  • Sample data and sample queries from your application; and
  • For team projects, a candid evaluation by each member of the contributions of all other members (NOTE: EVERYONE MUST TURN IN AN EVALUATION WITH THE SOURCE LIST SIGNED; ON A TEAM OR NOT).
Possible Project Topics

Topic #1 - PairEval
I need a PHP based system that will allow professors to create pairs of students for project assignments. The system should allow students to rate the performance of the other students in the group. The system will tie into either NetBadge and/or Collab (I have some code that will help you do this).

Topic #X - Roll-Your-Own Project
You can choose to do a project of your own design. Be forewarned that you will have to be able to explain your project completely and that it is of sufficient complexity.
Grading Rubrick

Note: You can request a certain browser for me to grade your project with, either a Mozilla-varient or an IE-varient.

Your project grade will be 75% for the database and application and 25% for the documentation. To get full credit for the database and application, your database should be well designed (and proven so in the documentation) with enough relevant data to show that it does work properly. The application should be well-designed, free from technical errors, thoroughly tested, and should be good enough that, if this were a real-life project, you would be proud to turn it in to your boss. (i.e. doing little things to make your project stand out from the others is a good thing.) To get full credit for the documentation, it should be free from grammatical errors, contain all necessary information, and your train of thought in developing the application should be apparent.

Database (40%)
  • At least five tables (5%)
  • - Rather self explanatory
  • Good data (5%)
  • - Populated with enough different data to prove your queries work properly
    - Data should be relevant (US phone numbers have 10 digits, etc.)
    - Your data should be also relevant to whatever you are doing
    - You should have tables of different things, not just five tables of the same info
  • Database should be in Third Normal Form (note: if you're in BCNF, you're in 3NF) (10%)
  • - You should have good database design
  • Database Security (10%)
  • - Proper user management must be enforced for access control to sensitive data
  • At least one specialty command / feature (10%)
  • - Triggers, Views, Constraints, MySQL special commands, anything different/fancy, other as specified
Application (35%)
  • Able to retrieve applicable records for a given scenario (5%)
  • - Have to be able to test database connectivity
  • Able to add a record to at least one table (5%)
  • - Have to be able to test database updating
  • Able to do other relevant functions (delete, update, etc.) (5%)
  • - Do something neat to impress
  • Able to export data in some form (5%)
  • - Reporting function, export XML, etc.
  • Good design and work (15%)
  • - Your program should be well thought out, pleasing to look at, and not break when used. Having an app that just has forms with no real design behind it is NOT sufficient. It should be obvious that time was spent to make your application look nice and work well.
Documentation (25%)

Part I - Project Information
  • Introduction (2%)
  • - Describe the world you are trying to model. Include everything that you feel is relevant. This should be around 1/2 to a full page.
  • Requirements Document (3%)
  • - List of functions, requirements, user stories, use cases, etc. that your application must fulfill. This must be at least 1 page (otherwise you have a really small app and that's not good), but doesn't have to be terribly much longer. Make sure to talk about your security measures, special functionality, and how you export data!
Part II - The Design Process
  • Explanation of design decisions that you made in creating your application (i.e. why you choose the type of app you did, why that language, if your database should be secure, did you secure it and how, anything interesting or relevant, etc.) (2%)
  • - Show me your thinking as to why you did certain things. Probably around 1/2 a page.
  • An E-R diagram (5%)
  • - Make sure you model EVERYTHING in your database! Don't leave out stuff!
  • Database schema including integrity constraints (2%)
  • - Just give me the schemas straight from your database with things like primary key, unique, not null, etc. Easy 2% here.
  • Proof that your database is in Third Normal Form (5%)
  • - Take your tables and perform the tests we went over in class. Be thorough. Do NOT skip steps.
Part III - Evaluation of Product
  • A description of your testing procedures for both the database and application (2%)
  • - If you didn't test, you didn't do good design. You don't have to go into unit tests, etc., but just give me a general idea of what you did to make sure that everything works.
  • Sample data and sample queries from your application (2%)
  • - Give me an idea of what your database does without having to load it.
  • Grammar, spelling, etc. (2%)
  • - Your document should be proofread and free from error.
  • For team projects, a candid evaluation by each member of the contributions of all other members. For everyone, your signed pledge and source list. (without this: -20% per person)
  • - I'm serious about this.
Suggested Project Schedule

By Oct 30...
  • Documentation Introduction
  • Requirements Document
  • E-R Diagram
By Nov 6...
  • Setup at least five (different) database tables
  • Populate the database table with good data
  • Add special SQL command (trigger, assertion, constraints, etc.)
  • Do the 3NF proof to show that your DB is in good form
  • Print out the schema using phpMyAdmin and add it to your docs
By Nov 13...
  • Setup limited user to access the DB
  • Program first pages of your site, including SQL to do a select from the DB
  • Finish coding the SQL commands (insert, update, more selects, etc)
  • Reporting functionality
Before Thanksgiving Break...
  • Finish coding
  • Test your application - write down what you do
  • Copy your SQL commands out of your app and put them in your docs, with example result sets
By Dec 4...
  • Actually finish coding...
  • Put together final doc and proofread