Final project assignments
The goal of the final project is to design and implement a database and to implement a computer program that interacts with the database. You are free to choose the topic and content of the database and the functionality of the computer program. The concept of computer program will be interpreted broadly and could include some dynamic webpages that interact with your database. High-level requirements are as follows.
- The database should be designed using an EER model; it should contain some nontrivial entity types and relationship types.
- The database schema should be constructed using relation notation, as in section 6.1.5 of the textbook.
- The database should be implemented in an SQL environment such as PostgreSQL, MySQL or SQLite. Exception: With the prior permission of the instructor, you may use a NoSQL database.
- The database can be deployed on your own device, on Supabase, or on another server or service of your choosing.
- The computer program should demonstrate some interesting properties
or capabilities of the database.
- You are free to use any language or framework. In class and homework assignments, we used Java and JDBC. This is therefore the easiest option. But you are welcome to use Python, JavaScript, or another programming language, combined with any other suitable tools or frameworks such as Node.js/Express, Python/Flask etc.
- The final project can be completed individually or in teams of two. However, if you worked with a partner for the RP1 and RP2 assignments, you may not work with the same partner again. If you would like a partner but do not have a specific person in mind, the instructor will try to find one for you.
- An approximate guideline for the amount of effort to be devoted to
the project is at least 20 hours of work.
- We will be devoting the last two weeks of class time and homework time to the final project. (Exception: There will be some short mini-lectures during class time in the last two weeks, covering optional topics for which there is no assigned reading or homework.) Therefore, the final project should represent about 20 hours of work during class time and homework time in the last two weeks of the semester, plus additional time during the exam period.
- If working in a team of two, both members of the team will receive the same grade. Exception: If there is a severe imbalance between contributions of team members, this should be discussed as early as possible with the instructor.
- The expectation for total amount and quality of work will be higher for a team of two compared to individuals working alone.
- Optionally, you might consider using one or more advanced techniques in your project. These may include: transactions, prepared statements, stored procedures, or triggers. Additional reading of the textbook and/or PostgreSQL or MySQL documentation may be required for this.
If you have a particular interest in pursuing a project that does not meet the above requirements, feel free to discuss it with the instructor. One goal of the project is that you should work on a project that you are excited about, so do please discuss your ideas with the instructor.
AI use
You are permitted to use all relevant tools, including AI assistance, for all aspects of this project. You are permitted to use AI as much as desired for writing code, creating schemas, creating your presentation, writing your experience report, and all other aspects of the project. You are not required to document every individual use of AI. As stated above, the expectation for the project is that should represent about 20 hours of work. Therefore, if you use AI to quickly develop a prototype of your database and program, you should invest additional time adding features and improving it (again with AI assistance if desired). The final project should represent 20 hours of your own work. In your presentation and experience report, you should clearly explain which parts of the project were largely completed by AI, and how you spent your own time to improve and develop the project.
Graded components FP1-FP4
The final project consists of four graded assignments labeled FP1-FP4. Each assignment is described separately below. Assignments should be submitted to Moodle. Submission of multiple files is permitted. Any appropriate file types and formats may be used. If working in a team, only one member of the team should submit to Moodle.
FP1 (30 points)
Submit a project proposal to Moodle. Describe the proposed content of the database and any ideas you may already have for the design. Describe some ideas of what functionality the computer program may have. The length of the proposal should be 300-500 words, although longer proposals will not be penalized. Images, figures, or diagrams may be included, but are not required.
FP2 (60 points)
Submit docments explaining the current design and content of your database and the status of the project. This should include:
- an ER or EER model, together with any necessary annotations;
- the database schema in relation notation (as in section 6.1.5 of the textbook);
- an SQL file consisting of a dump of the current version of your database;
- a brief status report explaining what has been achieved so far and what are the major steps remaining to complete the project—this should be 100-200 words in length, although longer reports will not be penalized.
Note that assignment FP2 is just a snapshot of the current design. You are permitted to change the design and content of your database after submitting FP2.
FP3 (120 points)
Give a presentation describing your project. The presentation should be approximately 10 minutes in length, with up to five minutes of questions from the audience afterwards. If at all possible, the presentation should include a live demo of your computer program interacting with your database. You must submit a copy of your slides to Moodle before the final presentations begin.
The grading of the presentation will be based on the quality of the presentation itself, not the underlying merit of the project. The underlying merit of the project will be graded in FP4.
To achieve an excellent grade, your presentation should excel on the following aspects. It should:
- meet the target length of ten minutes, plus or minus two minutes;
- clearly explain the design and content of your database;
- clearly demonstrate the functionality of your computer program interacting with your database;
- use clear and engaging visual materials (slides and/or whiteboard);
- employ large fonts that are very easy for the audience to read and use only a small number of words on every slide so that every word can be read by the audience;
- be delivered in a clear, engaging, and fluent voice;
- be delivered without reading verbatim from notes or slides (it is a good idea to use notes—just don’t read from them word for word).
FP4 (1000 points)
Submit documents explaining the current design and content of your database and the status of the project. This should include:
- an ER or EER model, together with any necessary annotations;
- the database schema in relation notation (as in section 6.1.5 of the textbook);
- an SQL file consisting of a dump of your database;
- the source code of your computer program;
- an experience report, described in more detail below.
The FP4 experience report
Your experience report should be 500-2000 words in length, although longer reports will not be penalized. It is not a formal report, but rather a description of your experience in completing the project. One important goal of the report is to convince the instructor that you invested time and effort in your project, equivalent to about 20 hours of work. Therefore, if you made extensive use of AI, you should explain carefully how human effort was invested in the project. You can shape the report according to your own experience, but it would be a good idea to include some or all of the following:
- a description of how to run your computer program and what the computer program does;
- descriptions of any interesting features of your database design and computer program;
- descriptions of any difficulties you faced during the project and how you overcame them;
- descriptions of which parts of your project were largely accomplished by AI and which parts were done by human work (as mentioned already above, it is strongly recommended to include this);
- descriptions of additional features that you would like to add if you had more time;
- discussion of social, legal, and ethical issues that could arise if your database application were released publicly and had a large number of users.
You can format the report in any reasonable fashion. Feel free to use bullet points, diagrams, and figures as appropriate. Clarity, technical correctness, and grammatical correctness are important.
FP4 grading
It is not possible to provide a formal rubric due to the widely varying nature of final projects. However, points will be awarded in three categories of roughly equal weight.
- Creativity: Is the database design and content interesting? Does it demonstrate creativity in how to represent complex relationships between entities? Does the computer program do something interesting? Does the experience report note some interesting aspects of the project, such as surprising results, challenges encountered, and social/legal/ethical issues? Does the project use any advanced techniques, such as transactions, prepared statements, stored procedures, or triggers?
- Effort: Is the total amount of effort commensurate with two weeks of course work? Does the length of the SQL and Java (or other programming language) code represent an appropriate amount of work, after accounting for the use of AI? Does the experience report convey an appropriate amount of work?
- Technical correctness and quality: Is the EER design correct? Is the translation into relation notation correct? Is the SQL code correct? Is the programming language code correct? Is the SQL code and source code commented appropriately? Does the experience report convey its ideas clearly, with correct grammar and technically correct statements?