COMP 340: Databases, Fall 2016
Project Grading Rubric
The syllabus states that the group project is worth 30% of your overall class grade.
1/3 of that is the project milestones, and 2/3 of that is the final deliverable, the complete
Flask web application.
Within the 2/3 pertaining to the final deliverable, the grading will be based on the following criteria:
- Satisfaction of the project guidelines (appropriate domain, meeting minimum requirements for number of relations and attributes, etc).
- Meeting a minimum level of functionality, similar to the blog app built over two classes as a lab.
- Additional features beyond the minimum level of functionality.
- An evaluation of how well the group worked together and each group member's respective contributions to the final product.
What is the minimum level of functionality?
- You must have some sort of main page for the web app that greets the user.
- You must have a minimal level of navigational functionality (the user should never get "stuck" somewhere in the application).
- You must have at least one part of the application that SELECTs data
from the database and displays it, you must have one part that INSERTs data into the database, one
part that UPDATEs data in the database, and one part that DELETEs data. This is typically known as a CRUD application, for
Create, Read, Update, and Delete.
If you meet these criteria, you will receive a minimum grade of 85% on the final deliverable. The remaining 15% is made up through
features beyond the minimum.
What are features beyond the minimum?
The minimum level of functionality, as described above, is not particularly user-friendly.
Using what you learned through making the blog app will let you build a web app that functionally works OK, but it
could be made a lot better. The remaining 15% of the grading of the final deliverable will come from adding additional features
not explicitly taught in class. To accomplish this, you will likely need to read more about HTML, Flask, and/or Jinja2. You may also want
to investigate technologies such as JavaScript or Ajax.
Here are some things that will get you additional percentage points above 85%:
- Adding graphics (easy).
- Adding support for server-side sessions, using the session variable in Flask (medium, depending on what you want to do).
- Adding users with login/logout functionality (probably using sessions) (medium).
- Changing the layout to make the pages look nicer (using HTML or CSS). (easy-medium-hard depending on effort)
- Adding SQL features other than basic CRUD things. This might include topics we haven't talked about yet or haven't spent much time on:
different joins, aggregation and grouping, indexes, transactions, views, triggers.
- Switching to a different RDBMS (this should only be done for a valid reason, such as wanting to use stored procedures).
- Using additional Flask features or libraries, such as WTForms.
- Using additional Jinja2 features.
- Basically anything above and beyond the minimum functionality.
What can I not do?
You may not use any Flask library that writes the SQL queries behind the scenes for you or otherwise obscures them.
For example, the Flask-SQLAlchemy library does this; don't use this library. You should be writing all of your SQL queries
directly in the Python code.
What is the evaluation of each group member's contributions?
After completion of the project, each group member will fill out an evaluation describing their contributions to the
project and evaluating the other members as to their contributions and how well the group worked together.
By default, all group members share equally in the final group project grade. However,
if a pattern emerges of one or more group members contributing significantly more or less than other members, individual grades
on the project may be adjusted up or down, as much as a letter grade.