Final Project: Implementation
Getting Started
Template Files
To provide you some structure with which to start building your final project, we’ve provided you with three template files: DESIGN.md
, schema.sql
, and queries.sql
. Start by downloading these template files and reading on, below!
Download the template files
Log into cs50.dev, click on your terminal window, and execute cd
by itself. You should find that your terminal window’s prompt resembles the below:
$
Next execute
wget https://cdn.cs50.net/sql/2024/x/project/project.zip
in order to download a ZIP called project.zip
into your codespace.
Then execute
unzip project.zip
to create a folder called project
. You no longer need the ZIP file, so you can execute
rm project.zip
and respond with “y” followed by Enter at the prompt to remove the ZIP file you downloaded.
Now type
cd project
followed by Enter to move yourself into (i.e., open) that directory. Your prompt should now resemble the below.
project/ $
If all was successful, you should execute
ls
and see DESIGN.md
, schema.sql
, and queries.sql
—the three components of the final project.
Specification
Your final project should be composed of three files:
DESIGN.md
, which is a rigorous design document describing your database’s purpose, scope, entities, relationships, optimizations, and limitations. The goal of the design document is to make your thinking visible. Your design document should include:- An entity relationship diagram for your database.
- A video overview, no more than three minutes long.
schema.sql
, which is an annotated set ofCREATE TABLE
,CREATE INDEX
,CREATE VIEW
, etc. statements that compose your database’s schema.queries.sql
, which is an annotated set ofSELECT
,INSERT
,UPDATE
,DELETE
, etc. statements that users will commonly run on your database.
You will (intentionally!) not submit a database file. You should design your database without feeling constrained by needing lots of data to fill it.
The requirements for each of these components are described in more detail below.
DESIGN.md
Within DESIGN.md
, write about your database’s purpose, scope, entities, relationships, optimizations, and limitations. Write for a technical audience that has taken a course such as CSCI S-151. To help you, the template DESIGN.md
file includes sections with questions for you to answer.
DESIGN.md
is a Markdown file, which allows you to easily format your document using Markdown syntax. If you’re new to the format, learn more at markdownguide.org.
Entity Relationship Diagram
Your DESIGN.md
file should include an entity relationship diagram for your database. You can create your entity relationship diagram any way you’d like, but allow us to suggest a few!
- If you’re the pencil-and-paper type, you can draw your diagram, take a picture, and upload it to your codespace.
- If you’re digitally inclined, you can use a tool such as the Mermaid.js live editor. Mermaid.js is a toolkit via which you can create and export diagrams (including entity relationship diagrams!). See the documentation to learn the relevant syntax and see examples.
- You’re also welcome to use any other software that helps you draw the types of shapes you’d like to draw.
When you have an image of your entity relationship diagram, you can embed it in your DESIGN.md
file using the following syntax:

Where IMAGE TITLE and FILENAME are your image’s title (entirely up to you!) and its filename (e.g., diagram.jpg
), respectively.
Video Overview
Create a short video (that’s no more than 3 minutes in length) in which you present your project to the world, as with slides, screenshots, voiceover, and/or live action. Your video should somehow include your project’s title, your name, your city and country, and any other details that you’d like to convey to viewers. See howtogeek.com/205742/how-to-record-your-windows-mac-linux-android-or-ios-screen for tips on how to make a “screencast,” though you’re welcome to use an actual camera. Upload your video to YouTube (or, if blocked in your country, a similar site) and take note of its URL; it’s fine to flag it as “unlisted,” but don’t flag it as “private.”
schema.sql
Your schema.sql
file should include a set of SQL statements to define your database’s schema, annotated with brief SQL comments. Recall that you can use the following syntax to write a SQL comment:
-- This is a SQL comment
Your schema.sql
file will likely contain CREATE TABLE
, CREATE INDEX
, and CREATE VIEW
statements.
queries.sql
Your queries.sql
file should include a set of SQL queries typically run on your database, annotated with brief SQL comments.
Your queries.sql
file will likely contain SELECT
, INSERT
, UPDATE
, and DELETE
statements.
You do not need to fully populate your database—you need only show representative INSERT
statements.
How to Submit
- Go to CSCI S-151’s Gradescope page.
- Select Final Project: Implementation.
- Upload your
DESIGN.md
,schema.sql
, andqueries.sql
files. Also be sure to include any other supporting files, such as your entity relationship diagram. - Submit this debriefing form.
If you are collaborating with other students, it is incumbent on one member of the group to submit on behalf of everyone in the group (and everyone in the group is responsible for confirming they have a submission on file by the deadline).