CS101 Fall 2025: Final Project
π This is your opportunity to showcase everything you've learned in CS101 by building a complete Python application that solves a real-world problem or fulfills a specific need. Building on the ideas you developed in Lab 08, you will now implement, test, document, and present your chosen project.
This project represents the culmination of your work this semester and demonstrates your mastery of Python programming concepts, problem-solving abilities, and software development practices.
- Assigned: Thursday, 20th November 2025
- Due: Wednesday, 10th December 2025 at 9:00 AM
- Presentation Date (Project Update): Wednesday, 4th December 2025 during class
By completing this final project, you will:
- Apply core Python programming concepts to solve real-world problems
- Design and implement a complete software application from scratch
- Write clear documentation for code and user instructions
- Test and debug a complex program
- Communicate technical ideas effectively through presentation
- Demonstrate mastery of Python fundamentals including data structures (use of primitives, lists, dictionaries), control flow, functions, modules, file I/O, addition to other concepts that we have covered throughout the course.
You will create a Python application based on one of the three ideas you proposed in Lab 08 (or a refined version approved by your instructor). Your application should be functional, well-documented, and demonstrate the programming skills you've developed throughout the semester.
You can decide if you would like to work individually or with a partner. Consider the following guidelines:
- Individual Projects: Complete all components independently
- Pair Projects: Up to two partners. Both partners must contribute equally to all aspects (code, documentation, testing, and presentation). Group projects should demonstrate approximately 2x the complexity and features of individual projects.
Your final project must include all five of the following components:
You will be creating documentation for your project using a writing/README.md file. This file is to contain sections in the documentation that includes:
-
Section Project Description
- Clear explanation of what your application does
- The problem it solves or need it fulfills
- Target users and use cases
- If you have made a game, please describe the genre and gameplay: TODO
-
Section Setup and Installation Instructions
- How to set up the development environment using
uv - List of all dependencies and how to install them with
uv - Step-by-step instructions to get the application running using
uv run
- How to set up the development environment using
-
Section User Guide
- How to use the application
- Description of features and functionality
- Example usage scenarios
-
Section Technical Documentation
- Overview of code structure and organization
- Explanation of key functions and modules
- Design decisions and rationale
Documentation should be written in clear, professional language in a README.md file in your project root.
Your Python code must demonstrate the following:
Required Programming Concepts (all must be included):
The following are concepts that we have covered in the course. Please incorporate each into your your project code.
- β Lists: Use lists to store and manipulate collections of data
- β Dictionaries: Use dictionaries for key-value data storage
- β Functions: Implement multiple functions with clear purposes
- β
Conditional Loops (
whileloops): Use conditional iteration where appropriate - β
Range Loops (
forloops withrange()): Use range-based iteration - β File I/O: Read from and/or write to files
- β
Exception Handling: Handle at least one type of error using
try-except
Code Quality Standards:
- Follow Python naming conventions (snake_case for variables/functions)
- Use meaningful variable and function names
- Include docstrings for all functions
- Add inline comments to explain complex logic
- Organize code into logical sections or modules
- Keep functions focused on single tasks (good modularity)
Best Practices:
- No global variables (except constants)
- Proper indentation and formatting
- Use the "DRY" principle (An acronym for "Don't Repeat Yourself")
- Code should be clean and readable. You can use multiple files/modules if needed.
Demonstrate that your application works correctly:
- Test Cases: Create and document a set of test cases that validate your application's functionality
- User Testing: Perform user-level testing to ensure the application works as intended
- Edge Cases: Test boundary conditions and handle edge cases appropriately
- Error Testing: Verify that exception handling works correctly
Testing Documentation: Complete the writing/testing.md file to document your testing process. This document should explain how you tested your application. Note: We are not using automated testing frameworks like pytest in this course. Focus on manual testing strategiesβrunning your program with uv run src/main.py using different inputs, testing edge cases, and verifying your exception handling works as expected.
Deliver a 5-10 minute presentation to the class that includes:
-
Project Introduction (1-2 min)
- What problem does it solve?
- Who is it for?
-
Live Demonstration (3-5 min)
- Show your application in action
- Demonstrate key features
- Show it handling different inputs/scenarios
-
Technical Highlights (2-3 min)
- Interesting coding challenges you solved
- Creative approaches you took
- Technologies or techniques you learned
Note: Your project doesn't need to be 100% polished for the presentation, but it should be functional enough to demonstrate its core features effectively.
Presentation Tips:
- Practice your demo beforehand to make sure that the code runs smoothly
- Have a backup plan if something does not work
- Be prepared to answer questions
Complete the writing/reflection.md file with thoughtful responses about:
- Technical Implementation
- Challenges and Solutions
- Learning and Growth
- Project Evolution
Your project will be evaluated based on:
- Able to verbally explain how to the code works
- Application works as intended
- Implements core features successfully
- Handles user input appropriately
- Error handling functions correctly
- Includes all required programming concepts
- Follows Python best practices
- Well-commented and documented
- Clean, organized, and readable
- Clear and comprehensive README
- Adequate setup instructions
- Good user guide
- Technical documentation present
- Adequate test coverage
- Edge cases considered
- Testing documented
- Clear communication
- Effective demonstration
- Appropriate length and content
- Thoughtful analysis
- Addresses all prompts
- Shows learning and growth
Your project should be:
- β Completable within 2-3 weeks
- β Challenging but achievable
- β Demonstrative of multiple programming concepts
- β Functional and testable
Avoid projects that are:
- β Just basic input/output
- β Single-function programs
- β Too similar to class exercises
Avoid projects that require:
- β Advanced libraries that you do not feel comfortable using
- β Complex GUI frameworks (unless experienced)
- β Machine learning or AI (unless specifically discussed)
- β Web frameworks or databases (unless approved)
When in doubt, consult with your instructor!
You will have to have a main entry point for your application, typically src/main.py.
To run your Python program, use:
uv run src/main.pyTo manage the dependencies of your project, you will need the file, pyproject.toml which can be created using uv init pyproj. Note, the file README.md is also crated here, but for this work, you will be modifying the one already provided; writing/README.md.
To add dependencies to your project, use the command:
uv add package-nameCommit and push your code regularly using Git:
git add -A
git commit -m "Descriptive message about your changes"
git pushImportant: Verify your files appear correctly on GitHub after pushing!
- All source code in the
src/directory - Completed
writing/README.mddocumentation - Completed
writing/reflection.md - Completed
writing/testing.md - Any data files or resources needed to run your application
- Test files or testing documentation
- Your code must be your own work (or your pair's work)
- You may use online resources for learning, but cite them in your reflection
- Do not copy code directly from tutorials or other students
- Using AI tools like ChatGPT is allowed for learning, but you must understand and be able to explain all code you submit
- Cite any external libraries or code snippets used
Students who have questions about this project outside of class time are invited to ask them in the course's Discord channel or during instructor's or TL's office hours.
