Project Details
Project Specs
Project Module Specifications:
Phase 1
Timeline
- April 10: Phase 1 DUE in class
- April 11: Phase 1 Report due 11:59PM
Mentor Status Checks
- At each status check we will check your progress and check your progress so far, the clarify of your plan for next steps, and how well your team is working together.
Approximate Phase 1 Grading Rubric: This is not the final grading rubric, but it gives you an idea what to expect:
- 30% - Evidence that you are making progress each week and contributing your share of the project (based on weekly checkins, trello board, and git log)
- 10% - Project report including ER or Schema Diagram
- 55% - Complete functionality
- 5% - Overall usability / look and feel (this will have higher weight in phase 2)
Phase 1 Demo: Full details of the Demo are listed here
Phase 1 Project Report: Your phase 1 report should include:
- An ER or SQL Table Diagram updated to reflect your final design
- An explanation for what normal form you believe your tables meet
- A short justification of your key design choices (0.5 - 1 page)
- A list of assumptions made for your design
- A list of missing functionality from your final implementation
- A work breakdown describing the key responsibilities of each team member
Phase 2
Phase 2 focuses on integrating your three projects together!
- Combine the components implemented by your teammates in phase 1 (do not build any new components from scratch).
- Check the spec for your component and implement any extra features specified there
- Projects, as in Phase 1, must use RDS and work for multiple clients at the same time.
Notes:
- We expect you to create a better looking and more usable website compared to phase 1
- A portion of your grade will be based on any “extra features” you complete that go beyond the spec – use your creativity!
The Phase 2 Deadline for everything other than the final report is:
- Code Deadline: May 1st, NOON
Phase 2 Demo
Details of the phase 2 demo are here.
Phase 2 Project Report
You must submit a written report about your project containing the following sections:
- DB Design: An ER or SQL Table Diagram updated to reflect your final design and an explanation for what normal form you believe your tables meet
- Visual Overview: Include screenshots, an animated gif, or short video showing a feature from each component included in your project (eg APPs, REGs, ADV). It does not need to be an exhaustive video of your functionality, just enough to remind us of how it works/looks.
- Design Justification: For Integration projects this should focus on how you connected your components together. For Builder projects it should justify your key design decisions. (0.5 - 1 page)
- Special Features: ~2 sentences describing each extra feature you added beyond the spec
- Work Breakdown: List teammates and specify the aspects of the project they worked on
Your report should be submitted as a file named final-report.md
or final-report.pdf
in your repository.
- Report Deadline: Your report is due by 11:59pm May 3rd (earlier if possible!).
Phase 2 Grading
Each team will need to schedule a grading appointment on May 2nd or May 3rd.
Contact the professor immediately if you anticipate an issue.
During your appointment we will walk through a script to test your application similar to phase 1. We will also be asking you deeper questions about your project’s design and implementation somewhat similar to Phase 1.
After we test your basic functionality you will have a chance to show off any extra features you added.
Approximate Grading Rubric: This may not be the final grading rubric, but it gives you an idea what to expect:
- 30% - Evidence that you are making progress each week and contributing your share of the project (see below)
- 10% - Project report
- 40% - Complete functionality
- 15% - Overall usability / look and feel
- 5% - Extra features of your choice (judged based on difficulty and innovativeness). Truly amazing extra features may earn additional bonus points.
Note that not all teammates are guaranteed to get the same grade. Your grade will be adjusted based on your contribution to the project as measured by git commits, mentor status checks, team member surveys and discussions, team dynamics and ability of each member to work as part of the team, and your ability to answer questions about your project.
AWS / Python / SQL Tips
Help Using AWS / VS Code
My videos:
- AWS RDS: How to setup MySQL
- VS Code: MySQL extension
- Python Virtual Environments / Installing libraries
- Python + MySQL
- MySQL vs SQLite and sample code git repo
Docs:
- VS Code Guide
- VS Code’s Flask Tutorial - Great info on using flask, the VS Code debugger, etc.
Feeling Behind in Python / Flask / SQL?
Watch these videos to catch up. You will need to log into LinkedIn using your GW account to get access. The videos are quite well done and a pretty efficient way to learn these technolgoies.
- Python Essential Training - overview of core python concepts and syntax
- Flask Essential Training - covers routes, forms, and templates
- Programming Foundations: Databases - this is mainly on principles of databases, but Chap 5 overviews SQL
Flask / SQL Examples
Here are some python examples to help with features in Python, Flask, and SQL.
- Flask sessions
- How to pass data between pages in Flask
- Processing multiple forms with one route - by Ryan Hudson
- Flask Static files, templates, and inheritance - by Sam Fritz
- Using Autogenerated IDs - by Julia Showl
TODO: (Submit a link in #engage to your solution. Solutions should not be directly related to the HW/project)
- Multi-file Flask app - show how to break a flask web app with routes stored in different files. The app should show how to share some app configuration data so it can be accessed from routes in both files
- SQLite create table example - submit a sqlite Repl with a script to 1) create two tables which include foreign keys, 2) insert some data, 3) select some data using a join
- If you have an idea for a useful example that would help current and future students (without giving away solutions), then message me to suggest it.