Due: Mon 1-Dec at 10:00pm (no late submissions accepted)
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.
Also, this project is meant to be educational but also good fun. Enjoy, and work hard!!!
Your task is to design and implement a program of your choosing. Your project may be graphical, text-based, or even file-based. It may be a game, or a math or science application, or a baseball statistics package, or a productivity application (think Word or Excel, only very “lite” versions), or a shell script, or anything else you choose. This is a wide open assignment, and you are expected to be creative in your approach to it.
Each of you will have a Mentor CA for your term project. While every staff member is happy to help you at any time, it is expected that your Mentor CA will provide most of your support and guidance during the course of your term project. You are encouraged to discuss your project with your Mentor CA during the last weeks of the semester, so you know where you stand and what additional work may be required to improve your grade.
You have an extended period to finish this assignment, with no other required assignments during the last three weeks. You are expected to invest at least 30 total hours into this project in this time, and it is further expected that your project will clearly reflect the quantity and quality of design and craftsmanship that goes along with that much time on this task. Many of you will exceed the 30-hour bar, but this is a minimum expectation for passing the term project.
Many events happen during Term Project Season! This is your guide to all of them.
Week 10
Week 11
Tue 11-Nov: Meet with your mentor for TP0. In this meeting you will discuss your final TP idea with your mentor, and they will either approve the idea or suggest how to change it to make it feasible. If necessary, they will also assign you a tech demo. This meeting is very important- do not miss it!! If you miss your TP0 meeting, you will receive a 2.5 point penalty on your final term project score.
Sat 15-Nov: If you were assigned a tech demo, your tech demo must be submitted to Gradescope; if you fail the tech demo, you will need to restructure your project to work without the tech.
Week 12
Week 13
Last Week 14
Mon 1-Dec by 10:00pm: Submit the TP3 deliverable on Gradescope. TP3 should be your completed final project, including a readme file, a video demo, and all design files related to the project.
Tue 2-Dec and Wed 3-Dec by All day: Meet with the course staff for your TP3 Interview. The TP3 interview is very important, as a significant portion of your final term project grade will be determined based on your performance and the information you share during this interview. While the interview itself accounts for 10% of your grade, the insights you provide will also inform the evaluation of your code, design, and overall project quality.
In the interview, you will present your project and demonstrate its key features. Your interview panel will consist of one instructor, your CA mentor, and one additional member of the 112 staff. Your demonstration should take no more than five minutes so that the panel has adequate time to ask you questions. During the interview, you may be asked technical questions about your project or to walk through portions of your code. This interview is your opportunity to ensure that your mentor and the interview panel fully understand your project so they can accurately represent and evaluate your work during the grading session. A signup form will be sent out for you to choose a TP3 interview slot during December 2–3. Please make sure you sign up promptly once the form is released.
Thu 4-Dec 12am - 10am: Keep an eye on your email inbox; sometime in this period, we’ll email a select few students and ask them to present at the Term Project Showcase the last day of classes. You are not required to present, but it is highly encouraged.
Thu 4-Dec 11:30pm: Attend the Term Project Showcase in class and watch demos of amazing projects by your fellow students!
Throughout this document, you will see references to the Minimum Viable Project (MVP). The MVP is the version of your project you must reach by TP2.
An MVP includes all core functionality of your project, is mostly bug-free, and provides a usable interface. Achieving MVP demonstrates that your project meets the course learning goals. If your project reaches MVP, it will receive at least 70% of the TP3 score. To earn a higher score, your project must go beyond the basics by adding significant features or polish.
Examples of enhancements beyond MVP include:
You are encouraged to reach MVP by TP2, but it is acceptable to reach it later, by TP3. However, aiming for MVP by TP2 will give you time to refine and extend your project with advanced features to further raise your score.
The term project is different from the other assignments and exams in 15-112. Therefore, it has its own special set of policies and rules. Note that the main course policies still apply, unless they are overruled by the policies described here.
The term project is open-ended, but the following restrictions apply. Additional limitations may be listed in the Term Project Preview document.
General Requirements
Framework and Design
cmu_graphics.Hardware and External Materials
pygame, are forbidden until MVP.Project Scope
All term projects must comply with the course’s academic integrity policy. The following clarifications apply specifically to the term project.
Individual Work The term project is individual. You must write your own code and submit work that reflects your own understanding.
Use of External Sources Unlike homework, your project may include ideas or code influenced by external sources such as online materials, AI tools like ChatGPT, or your own prior work.
Citations
citations.txt that lists all sources used, including AI tools and prompts, online materials, and any other external references.Collaboration You may discuss concepts with other students, but sharing or copying code is not permitted. You are responsible for protecting your own work so others cannot copy it.
Failure to make the origin of your work clear may result in significant penalties or an academic integrity violation. Non-original work will be evident in your TP3 interview.
Office Hours and Discord: TAs and the instructor will still provide help, but they will not know precisely how your term project works, so you will need to be prepared to ask specific questions.
Prior Work: You may use code that you’ve written for past assignments this semester, or code that you’ve written for projects outside of this course, but you must clearly cite this code as having been written for a different purpose. We will only grade you on code developed specifically for the term project. Additionally, all term project code must be completed within the current semester.
Weekly Meetings: You’ll have weekly meetings with your mentor to demonstrate the progress you’ve made and to receive advice. These meetings will be quick (often only ten minutes), but should greatly help you in making progress in the project. We expect you to treat your mentor with respect by responding promptly to scheduling emails, arriving at meetings on time, and never missing scheduled meetings. There will be point deductions when you miss meetings.
Submission: We will take snapshots from your GitHub repository for reference and grading purposes. Make sure your repository is up to date and accurately reflects your work at the time of each submission.
Extensions: We generally do not allow students to submit the deliverables late, and you may not use grace days on the term project deliverables. That having been said, if you have a medical or personal/family emergency, email the instructor to see if an extension can be arranged.
If you do wish to use an external module not explicitly forbidden, you will need to pass a tech demo first. Check the schedule for details of the timing of this. A tech demo is where you use the module you are interested and demonstrate that you understand how to use the basic functionality. This is not simply a matter of you getting tutorial code from the internet to run. This is you demonstrating that you can produce your own functional code that makes substantial use of the module. If you are unable to complete an adequate tech demo before the tech demo deadline, then you will not be permitted to use the module in your project.
You will have 3 weekly deliverables for this term project, each graded separately. Each of the deliverables comes with a rubric, but these rubrics are fairly general, as projects vary so widely. In general, we expect a large amount of effort to go into the design, writeup, implementation, and presentation of your project. In addition to these deliverables, there will be a final interview and a written assignment (reflection).
The purpose of the intermediate TP deliverables is to provide early feedback and help ensure that you are making steady progress toward a successful final project.
The TP1 deliverable consists of two main components: a design proposal and preliminary code. You should finish these components before meeting with your mentor so that you can present them in full. Your TP1 design proposal should be written in Markdown and saved as a file named README.md in your GitHub repository. The README.md should include a clear section titled “TP1 Proposal”, which contains your full design proposal.
Your TP2 deliverable consists of two components: a working demo and updated design docs.
Working Demo
At this point, you should have a working demo of your project that meets your project’s version of MVP (Minimal Viable Project). This generally requires that the core features of the project should almost all be implemented such that they more or less work. The code may be missing features, it may have a less-than-polished user interface, it may have bugs, it may even crash more often than desired, but it has to basically work for some reasonable definition of “work”. A project that reaches MVP status is guaranteed to get 70% of the “Project Codebase” points from TP3 next week. Your repository should include all the files required to run your project. The README.md should include a section titled # How to Run, describing any setup steps, dependencies, and instructions needed to execute your project.
TP2 Meeting You’ll meet with your mentor to check in and demonstrate what you’ve accomplished so far. If you miss this meeting, you will be penalized 2.5 points.
Updated Design Docs Many students update their design plans due to unforeseen problems or new ideas. You must add a new section to your design proposal, ‘TP2 Update’; in this section, you should list any design changes you have made. If you made no changes, simply say so in this section. If you do not add this update section, you will be penalized 5 points.
TP3 is your final term project deliverable, and should be your completed term project. The main deliverables are the project codebase and source files, a README.md file, a demo video, and your updated design docs.
Project Codebase The codebase should include all your python files and any other files (images, music files, etc.) required to help your project run. Your project should run robustly, should be algorithmically complex, and should have decent user experience. It may also have a well-designed user interface, depending on the project. We will take a snapshot of your GitHub repository at the submission deadline. Only code that has been committed and pushed to GitHub before the deadline will be considered for grading. Make sure all your latest work is pushed to your repository on time.
README.md file should include your TP1 Proposal, your TP2 Updates, and instructions on how to run your code. You should polish and finalize your README.md for TP3. In particular, we expect:
README.md files will result in point deductions (up to 5 points) from your TP3 grade.Project Demo There are two parts to the project demo: the video demo and the live demo.
README.md file should contain a link to the uploaded video.
The quality of the video and audio does not need to meet any particular standard (as long as it meets YOUR standards such that you’d be happy to include it in your own portfolio). Feel free to use a video camera or a screen capture program to record: Zoom, Quicktime, Jing, and Screencast-o-Matic, OBS Studio are all good and free options. Parts of your video are very likely to appear in the TP Lightning Round video.README.md should have a new section, ‘TP3 Update’, which includes any design modifications made since the previous update (or says that no changes were made if no changes were made). You will not be penalized if this section is not included, but it may negatively impact our ability to grade your project, as they may not be aware of new features you’ve added.You will present a live demo of your project to the course staff. The demo may last up to 5 minutes and should highlight the core features of your project, especially those that might not be immediately apparent when staff test your code. You will need to sign up for a demo slot; details about scheduling will be provided later.
When we say “your project” below, we mean “the original contributions you made to your project and which you clearly identified to us for grading purposes”. That said, in general, the software component of projects are graded by equally considering a few general categories. There is some overlap, but you should pay attention to each of these to ensure the best grade:
Because of the open-ended nature of the project, we cannot (and will not) tell you whether or not a particular project, algorithm, or set of features is going to give you an A. In fact, CAs are prohibited from answering grade-related questions like “With my project as it is now, do you think it will get _____ grade” or “If I do _____ will I get _____ grade” or even telling you whether you will probably get a particular grade, so please do not ask these questions. All that we can tell you is whether or not you have hit MVP yet (which is described later in this document). In order to get the best grade possible, listen to the feedback you receive and be efficient about where you invest your time. Please also understand that because we can’t predict the future, we are simply giving you the best advice possible based on our understanding of your project. Your mentor is not responsible for your grade, and your grade is determined solely by what you turn in.
| TP Component | Weight |
|---|---|
| TP1 Checkpoint | 10% |
| TP2 Checkpoint | 10% |
| TP3 Interview | 10% |
| TP3 Deliverables | 40% |
| TP Reflection | 10% |
| Overall and Steady Effort | 20% |
When grading your project code, we also consider effort. The term project should occupy the majority of your 15-112 time during the final three weeks of the semester. Since the course is 12 units, this corresponds to about 12 hours per week, or roughly 30 hours total after accounting for lectures and other work. You are therefore expected to dedicate at least 10 hours per week to your term project. Demonstrating consistent effort and steady progress in mentor meetings will contribute to your score.
You are also expected to work steadily throughout the project period. This will be reflected in your GitHub history. Make regular commits as you develop your project. A single large commit made right before the deadline is not acceptable and will result in a penalty.