Due by Friday, December 8th, 11:59 pm (midnight)
For the final project you will work with, at most, one other person to design and build a GUI application using the python module, pygame.
Please note that although I hope you end up with a final application you are proud of, this project is modeled after real world software production. It is about process, not product. You can build anything you like within the requirements. The TA’s and I will guide you to create a reasonable version of your idea.
Milestone |
Due Date |
Team Form |
TBD |
Final Project Repository |
TBD |
Models |
TBD |
ATP |
TBD |
Controller |
TBD |
Completed Final Project (w/ README.md) |
TBD |
- You may work with 1 other person on your project
- You must follow the basic MVC software design pattern
- Your program must have a graphical user interface
- The interface must be interactive, not just an informational display
- The application data and state must be encapsulated in one or more separate classes
- You must have some external data feature, ie. files or network requests.
- Your project must be sufficiently complex and unique.
You will be evaluated on how well you meet the requirements and your overall Software Design/Implementation. You will also be evaluated for your teamwork skills if working with a partner.
At the end of the semester, I will make a final submission form available. A portion of your grade depends on your submission of the form and your self evaluation.
For Teams: You will also submit a grade for your teammate in the form. If your teammate reports that you did not contribute, you may receive a 0 for the final project.
I have provided a template README.md
in the final project repo. You will need to complete the README.md
before submitting your project.
NOTE: You must not have any code outside of classes except for constants, classes, and the main function. All program data and logic must be contained within your classes.
You can create a Utility
class to contain CONSTANTS and utility functions. Below is an overview of the project software specifications:
- Structure
- In your root folder, you should have:
- README.md
- main.py
- assets/
- Media (images, music, etc.) must go into a separate assets folder
- src/
- All your source code (.py files) except for ‘main.py’ should go into the src folder
- etc/
- Anything else, additional documents you want to keep in your repo, should go here
- Size of Undertaking and Uniqueness
- Your project will receive a difficulty and uniqueness rating.
- Difficulty: I will let you know ahead of time if your project is too simple. Your result will be based on how relatively difficult the project was to implement.
- Uniqueness: If half the class has basically the same program, you will receive only half points. If only one other team has a similar program, you will receive full points.
- Similarity is based on the code logic and structure, not the data
- Quality of Code
- Design
- All code is contained within a class except main()
- Follows all course Style Guidelines
- Correctness
- Logical clarity
- Your code is clear, concise, and DRY.
- Organization and Internal documentation/comments
- All methods/functions should contain doc strings except the main
- User Interface
- GUI design
- Your design is thoughtful of the user and aesthetically pleasing
- Ease of use
- It is clear what the user needs to do to run your program
An ATP details step by step instructions to run your program and show all the working features. I have provided a starter ATP for you in your README.md.
- You MUST write your ATP at the end of your README.md using the same tabular fashion in the proposal template.
- Each row of your ATP should be a single, simple, and specific step with the expected result. Below is an example of how to compose the steps for your ATP
Step |
Action |
Result |
1 |
Go to Set Counter entry box, enter 10 and press Enter |
Display changes to Count = 10 |
correct
Step |
Action |
Result |
1 |
Enter a value into the entry box |
value is displayed |
incorrect
Below are some previous successful ideas final projects.
- Game
- Simulator
- Educational
- Politician Simulator - Simulate a Political Campaign with random events, fundraising, and polls
- Stock Simulator - Simulate stock market buy and sell
- Creative
- Music Mixer - Record and mix music using a simulated music pad
- Unique
- Virtual Tour - A virtual recreation of something to explore
- Garden Organizer - You set your layout, what plants you want, and it creates a garden plan for you that optimizes space
- Guitar Tuner - This would use some interesting libraries and require you to understand how sound works
You will be required to submit your project to your Github Repository. We will grade whatever version of your project is in your repository at the due date.
Max score: 200 pts
- [1] project title
- [1] course number
- [1] semester
- [3] project overview
- [2] Lists additional modules with citation
- [2] Class relationship diagram
- [5] Data Permanence Feature
- [3] Contains screenshots of the Final GUI
- [2] Project file structure
- [20] contains an ATP
- [5] Template text removed, proofread, etc.
- [25] Style Requirements
- [25] Adherence to MVC
- Controller handles all events and model update
- Models are organized into separate files
- No unnecessary GUI elements or event handling in the models
- Uses the basic mainloop structure (events->update->redraw)
- [5] GUI
- Design is usable and aesthetically pleasing
- All functionality is in the GUI
- [5] Organization
- Project neatly organized into requested subfolders
- Filenames are appropriate and descriptive
- [20] Works according to each step in the ATP
- [15] Uniqueness
- [5] Difficulty
There will be 3 opportunities for extra credit:
- Early Submission
- 1 percentage point per day for every day before the deadline that you submit your completed and working Final Project, up to 10%.
- If you submit 2 days before the project is due, you would get an additional 2 percentage points extra credit added to your total project grade
Your project must be complete and fully working to submit early. No partially working projects may submit early.
- Non-Standard Library
- For every external python module library you use in your code (besides pygame) you will receive 2% extra credit. External libraries are libraries not included when you install Python, and must be installed with
pip
.
- Examples of External Libraries
- pygame (this is required, so no extra credit for this one)
- request
- numpy
- Examples of Standard Libraries (don’t qualify for extra credit)
- Be The Very Best:
- There will be a First, Second, and Third place prize for the best projects as judged by me. This will be judged according to the total project performance, including proposal and milestones.
- 1st place: 8% added to your total grade for the course
- 2nd place: 4% added to your total grade for the course
- 3rd place: 2% added to your total grade for the course