Quick shortcuts:
Term Project Guidelines
See the Term Project Gallery for Qatar or the Term Project Gallery for Pittsburgh for examples!
Note: this is a long document. But: you really need to read all of it, very carefully, before starting any of it. You are about to invest serious effort creating the capstone project for this course. You need to take the time to carefully read and understand everything in this document before you get started.
AI is allowed, and encouraged, for coding on the term project. We will be using Claude, provided by the university, and you may use it to help write your code. However, you must understand all of the code you submit, including every line Claude wrote for you. You will be interviewed after TP1, TP2, and TP3, without Claude, to confirm that understanding. See section 2 and section 4 for details.
1. Project purpose and scope
The term project is a capstone opportunity to apply Python, algorithmic thinking, interface design, and debugging to one coherent application. A re-creation or adaptation of an existing idea is acceptable if you choose its direction, make meaningful design decisions, and understand the implementation.
Your project should demonstrate substantial work appropriate to a three-week 15-112 project. Adding features or libraries that you cannot explain does not improve the work. Favor a reliable core experience, purposeful algorithms, and a usable interface over a large collection of disconnected features.
Technical requirements
- Language and graphics: Python and the current course version of cmu_graphics are required. Use the course MVC approach.
- Application structure: Build one interactive, coherent program. A set of unrelated mini-projects is not an acceptable substitute.
- Before MVP: Use cmu_graphics and Python tools already permitted by the course. Additional external Python libraries may be used only after mentor-confirmed MVP.
- After MVP: Additional libraries may support the project, but cmu_graphics, student-directed design, citations, and demonstrated understanding remain required.
- Other technologies: Discuss any hardware, alternate language, nonstandard app format, or graphics system with course staff before relying on it. Exceptions require staff approval.
2. Your responsibilities and AI assistance
You own the design
Bring an initial project direction to your mentor. Choose what it should do, identify its important features and algorithms, and plan the data they require. Your mentor may help narrow the scope, identify risks, and suggest improvements, but must not choose your project for you.
Before asking Claude in VS Code to implement a major feature, record your current approach in your own words. Your milestone proposals (see section 6) are where you do this for each week’s features: what they do, how their core algorithms work, and hand-drawn sketches. You do not need to solve every detail before receiving help; unresolved questions belong in your proposal as open questions.
Claude may assist with implementation
Claude may explain concepts, reason through problems with you, generate implementation based on your developing design, review approaches, and help debug. Evaluate its suggestions, revise them when necessary, and check that the resulting code behaves as intended.
Do not ask Claude to independently invent the project, make the key design choices for you, or transform a vague goal into a completed product you only learn to present afterward. Do not fabricate design notes or explanations. AI-generated implementation can earn credit when the design is student-led, the help is documented, and you understand the result.
You must understand all submitted work
Be ready to explain, trace, debug, and make a small unfamiliar change to important submitted code without Claude. Your interviewers may select any meaningful area of your program, including AI-assisted code and features added after MVP.
Cite external code, borrowed assets, course examples, and other sources, including prior code reused from another purpose. In the summary of progress of each proposal from TP1 on, list the sources you used and what Claude or other AI helped with since the last milestone. Using an external library does not require understanding its internal implementation, but you must understand how your code uses it, its inputs and outputs, and relevant assumptions.
3. Mentor meetings
You meet with your assigned mentor CA once after each milestone deadline, TP0 through TP3; section 6 gives the dates. Come prepared to demonstrate your current project, discuss your proposal and design, and explain your next steps. Your mentor may require changes to your proposal or project features.
4. Interviews
After TP1, TP2, and TP3 you have an individual interview, similar to the homework interviews, of approximately 15 minutes. It is conducted by your mentor CA and another CA; section 6 gives the dates. You may look at your project code, but you must answer without Claude or other assistance. Remember: you must fully understand all code that you submit.
What happens: The CAs review your submission beforehand and choose a feature, a concrete input or state, a plausible failure, and a small change to existing behavior. In the interview, you:
- Explain: Describe how the selected feature works, what its data represents, and why its design makes sense.
- Code Trace: Predict the branches, values, and state changes for a specified input or state before running the code.
- Debug: Identify a plausible cause of a failure and explain how to test or fix it.
- Modify: Make a small unfamiliar change to submitted code, explain its effect, and check the result.
The CAs may ask follow-up questions in any of these areas.
Scoring: Your interview receives a score from 0 to 1, which multiplies your score for that milestone (see section 7). Both CAs record evidence and agree on the score. You may ask clarifying questions and correct your own mistakes; substantive hints are considered in scoring.
5. MVP
A minimum viable project (MVP) is a fully functional version of your agreed core experience. It includes end-to-end main interaction, essential algorithmic features, and a usable interface. As a rough guide, an MVP is about 800–1,200 lines of code. Secondary features and visual polish may remain. Your mentor confirms both the functionality and sufficient understanding of the core implementation before MVP is approved.
Reaching MVP is a meaningful milestone, not an automatic guaranteed grade. If the target changes for sound reasons, explain and document the revised scope with your mentor.
In general, a project which just reaches MVP receives a final score of a 75 / 100, assuming full points were received in TP0, TP1, and TP2 and all interviews received a score of 1.0.
6. Milestone deliverables
At every milestone you submit a written proposal. At TP0, TP1, and TP2 it has two sections: Section 1 (a project overview at TP0, a summary of progress at TP1 and TP2) and Section 2, a detailed “By next week…” specification of the features you will have working by the next milestone. At TP3 it has only Section 1, a final summary of progress. See Term Project Proposals for the full format and sample proposals.
How to submit: Upload each proposal to Gradescope as a single PDF. Submit your code at TP1, TP2, and TP3 by pushing it to your GitHub repository and tagging the commit TP1, TP2, or TP3. See Term Project: GitHub Setup for setup and tagging instructions.
No late submissions: Due to the tight deadlines for getting you feedback, there are no late days or interview reschedules available for the term project deliverables. A proposal or tag submitted after the deadline receives 0 for that milestone.
TP0 | Initial proposal and direction (Due: Sun 8-Nov)
Mentor meeting: Monday or Tuesday after the deadline.
Submit:
- Submit your GitHub username using this Google Form. Double-check the spelling: the course staff uses it to give you access to your repository for TP1.
- Your TP0 proposal on Gradescope: a project overview, and a “By next week…” specification for a basic set of features you will have working by TP1. Include what you are not sure how to implement yet as open questions.
At your mentor meeting:
- Explain your project idea, why you chose it, its primary user experience, and one or two expected technical challenges. Mention relevant existing applications.
- Discuss a feasible core experience and leave with an approved starting direction and next actions.
TP1 | Basic features and MVP proposal (Due: Sun 15-Nov)
Mentor meeting: Monday or Tuesday after the deadline.
Interview: Tuesday, Wednesday, or Thursday (The course staff will pre-schedule with you).
Submit:
- Code with the basic features from your TP0 proposal working, tagged
TP1. Your code should address a real part of the project, not only a splash screen or decorative setup. There is no required line count at TP1. - Your TP1 proposal on Gradescope: a summary of progress against your TP0 proposal, and a “By next week…” specification for the features that bring your project to MVP.
At your mentor meeting:
- Present what works, why you made your current decisions, and what you will implement next.
TP2 | Working MVP and advanced-features proposal (Due: Sun 22-Nov)
Mentor meeting: Monday or Tuesday after the deadline.
Interview: Tuesday, Wednesday, or Thursday (The course staff will pre-schedule with you).
Submit:
- Code with a runnable core experience, tagged
TP2. - Your TP2 proposal on Gradescope: a summary of progress against your TP1 proposal, including changes to structure, algorithms, and scope, and a “By next week…” specification for the advanced features you will add by TP3. If MVP is not ready, make finishing the core experience the priority of this specification.
At your mentor meeting:
- Show the main workflow and core algorithms functioning together. Identify remaining bugs, limitations, and important work for TP3.
- If MVP is not ready, agree on a specific recovery plan with your mentor.
TP3 | Final handoff and demonstration (Due: Sun 29-Nov)
Mentor meeting: Mon 30-Nov.
Interview: Mon 30-Nov or Tue 1-Dec.
Submit:
- All Python source files and assets required to run the completed project, tagged
TP3. - A README in your repository describing the project, exact startup steps, needed assets or libraries, useful controls, and sample data or demo shortcuts if applicable.
- Your TP3 proposal on Gradescope, Section 1 only: a summary of progress against your TP2 proposal, including significant changes and known limitations, and a link to a narrated 1–3 minute demo video that shows important features and briefly explains the experience.
At your mentor meeting:
- Demonstrate important behavior live and discuss known limitations.
7. Assessment
TP0 is worth 5 points, TP1 10, TP2 10, and TP3 75, for 100 term-project points. Assessment considers student-led algorithms and decisions, functioning implementation and user experience, and code quality.
Your interview score is a multiplier. At TP1, TP2, and TP3, your score for the milestone is multiplied by your interview score, a number from 0 to 1 (see section 4). For example, if your TP3 work earns 60 of 75 points and your interview score is 0.75, your TP3 score is 60 × 0.75 = 45. Code you cannot explain earns little credit, however well it works. TP0 has no interview, so it is graded on your proposal alone.
TP1 and TP2 give you two chances to practice the interview and improve before TP3, where it counts most.
8. Practical guidance
- Commit and push frequently, and keep meaningful history. A single last-minute snapshot makes progress and recovery harder to demonstrate, but commits are not graded by quota.
- Verify the project runs on the intended course setup. Include all dependencies and resources or clear instructions for obtaining permitted dependencies.
- Ask your mentor early about scope, unclear technology permissions, or a milestone you may miss. Attendance rules follow current course announcements and the syllabus.