CMU 15-112: Fundamentals of Programming and Computer Science
Class Notes: Term Project Assignment
Due: Fri. 13-Aug at 5pm (No late submissions accepted)
Critical notes:
- Confirmation Form due by Fri 6-Aug at 8pm EDT
You must carefully read this document, truly carefully, and then you must fill out this form where you confirm to us that you have read this document. The form is due by Friday 6-Aug at 8pm EDT, and results in a 10-point deduction per day after that until we receive it.
- Really, read this carefully
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.
- Notable changes for this semester
Given the special circumstances and summer timing, we have made some important changes throughout the spec to make it work better for this semester. Thus, you may have friends who took 112 earlier who have different ideas about the term project spec than what is actually written here!
- Check out the TP Gallery!
See the Term Project Gallery for examples!
- Have fun!
This project is meant to be educational, but also good fun. Enjoy, and work hard!!!
- Term Project Description
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 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 be assigned a Mentor TA for your term project. While every staff member is happy to help you at any time, it is expected that your Mentor TA will provide most of your support and guidance during the course of your term project. Also, your Mentor TA will play the largest role in grading your term project. You are required to discuss your project with your Mentor TA during the last weeks of the semester, so you know where you stand and what additional work may be required to improve your grade.
There are no other required assignments during the last week. You are expected to invest at least 15 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 15-hour bar, but this is a minimum expectation for passing the term project.
The term project is very open-ended, but there are a few restrictions:
- Note: in addition to the restrictions listed below, due to the challenges of our all-remote learning this semester and the compressed nature of the summer, we listed a few additional restrictions in the Term Project Preview document here.
- You may not use hardware -- that is, not without special permission in an email from Professor Taylor no later than Saturday Aug 7.
- You must produce an interactive Python application.
- You may not do mini-games. You should have one reasonably rich and complex application, rather than a collection of smaller, not-so-complex so-called "mini-games". It is fine for you to embed a mini-game or two into your larger application if it really adds to the whole. But you cannot have a collection of mini-games and call that a term project.
- Generally speaking, you may not use non-built-in modules until you have reached MVP. If you wish to use a fairly basic but non-built-in module before MVP (like numpy or pandas, for instance) you must first meet with Prof. Taylor or Sara and pass a tech demo no later than Sunday Aug-8. This meeting is so that we can make it clear that we do not recommend using modules and so that you can convince us that A) you know the external material well enough to avoid getting in trouble, and B) your grade is high enough to withstand a potentially catastrophic term project grade if you spend too much time trying to make a module work and C) that using the module will somehow enable you to do something you couldn't do without it. If you fail the tech demo and insist on using the external material anyway, we will ignore any part of the project that uses the external material while grading, so do not do this. Remember that some modules like pygame are explicitly forbidden until MVP.
Note 1: once your project reaches MVP stage (as measured by your mentor), you may add on any external modules you want. This typically happens around TP2.
- Schedule
Many events happen during Term Project Season! This is your guide to all of them.
- Wed 4-Aug: TP assignment
The TP was formally assigned and extensively discussed in lecture. - Thu 5-Aug: TP mentors assigned
If you have additional time beyond studying for the final exam, you are strongly encouraged to check in with your TP Mentor, to discuss project ideas, designs, etc. - Sun 8-Aug: HackTP: Workshops, OH, and inspiration to finalize your ideas
- HackTP
This event will run throughout Sunday and will include optional lectures, workshops, office hours etc. to help you finalize your idea and plan your project. See Piazza for more details. On or before this date, you should meet your TP Mentor for 15 minutes to check on your progress, discuss project ideation, design decisions, maybe even work on a bug or two.
If you do not have a TP idea and a plan to begin your project by the end of Sunday, you are behind on your TP progress, and your mentor will help you decide on one at this point. The point is: as of the end of Sunday, you are committed to your project's basic vision and goals. By this time we hope you will have also made a decent start on the code (at least 100-200 lines) though you are not yet required to submit anything to Autolab.
- Check-In 1
Meet with your mentor over Zoom for your check-in 1 meeting to discuss the progress you made during HackTP and plan out what to prioritize for TP1. Ideally, you should have a solidified project idea before HackTP, but you must have a solidified project idea by the end of Sunday. There are no points directly attached to this check-in, but you will receive significant deductions if you are not appropriately communicative and responsive to your TA (see "Required Meetings" below).
- HackTP
- Tech Demo and Approval for external tech / modules
If you wish to use any tech outside of Python and what we have covered in the notes (at least, before you reach MVP), then you need to meet with Mike or Sara for approval by this date. To be clear, we do not recommend that you use external tech / modules. This includes if you wish to use any other libraries, modules, API's, hardware, and so on. If you wish to seek approval for external tech, it's a good idea to meet with your mentor (or at least with other TA's) well before this deadline to check in on how things are going, and to keep you both on the same page regarding expectations. That said, tech demos are your responsibility -- you have to demonstrate sufficient mastery of the tech to Mike or Sara so that they believe that A) you are able to fluently use the module already and do not have to learn it, and thus have a strong chance of using it productively in your TP, B) your grade is high enough to withstand a potentially catastrophic term project grade if you spend too much time trying to make a module work and C) that using the module will somehow enable you to do something you couldn't do without it. If you do not get approval on or before Sunday, then you will need to restructure your project to work without the tech, at least until you reach MVP. Remember, you must demo the tech in your meeting with Mike and/or Sara, and we will not extend the approval deadline. You have one chance so start now and do not expect approval. But, remember that using tech does not increase your chances of a good grade. It is easier to create a successful term project without additional tech.
While the specifics of your Tech Demo vary for each student, depending on how you intend to use your tech, in general you must show that you can deftly use the tech as required. For example, for opencv, you might demo that you can track a bright green object that the user is moving around. Then, we may ask you to change the code to track a bright red object, and you would have to be able to do that, fairly easily, while your mentor watched to confirm.
Your tech demo cannot just be example code you found online. Also, you must show your tech working inside of the cmu-112-graphics framework.
- Wed 4-Aug: TP assignment
- Mon 9-Aug: TP1
Meet with your TP Mentor for your TP1 checkin and submit the TP1 deliverable on Autolab. By TP1 you are expected to have finalized the design plan for your project, and you should have created a sizable amount of working code (ideally about 200-400 lines). - Tue 10-Aug: Check-In 2
Touch base with your mentor before 10pm ET to receive feedback on your progress and pacing. Your mentor will let you know if this meeting should be over Zoom or email, depending on your progress, and will initiate the scheduling of the meeting (if over Zoom). There are no points directly attached to this check-in, but you will receive significant deductions if you are not appropriately communicative and responsive to your TA (see "Required Meetings" below). - Wed 11-Aug: TP2
Meet with your TP Mentor for your TP2 checkin and submit the TP2 deliverable on Autolab. By TP2 you should be at a Minimum Viable Project (MVP) stage, with the majority of the project's core code implemented. If you wish to show your project in Thursday's showcase (which will help your grade and earn you lots of admiration from us and from your fellow students), you will let us know on Thursday evening. - Thu 12-May: TP Showcase (in lecture)
Attend the Term Project Showcase in your assigned lecture (or both lectures), and watch demos of amazing projects by your fellow students. We expect that most of these projects will be works-in-progress since the final project is not due until Friday, but that's ok! Note: this event is required, but it is also a lot of fun! - Thu 12-Aug: Check-In 3
Touch base with your mentor before 10pm ET to receive feedback on your progress and pacing. Your mentor will let you know if this meeting should be over Zoom or email, depending on your progress, and will initiate the scheduling of the meeting (if over Zoom). There are no points directly attached to this check-in, but you will receive significant deductions if you are not appropriately communicative and responsive to your TA (see "Required Meetings" below). - Fri 13-Aug: TP3 (Term Projects are Due)
Submit the TP3 deliverable on Autolab. TP3 should be your completed final project, including a readme file, a video demo, and all other supporting files related to the project. - Fri 13-Aug to Sat 14-Aug: TP Grading Sessions
Meet with your TP Mentor for your TP3 live demo. You may only present work that was completed before the TP3 deliverable deadline. Note that the TP3 meeting is very important, as it is where your mentor will decide what your grade should look like. Your mentor will send an email with sign-ups for time slots. We strongly suggest that you be ready 5 minutes early to your time slot, with your computer prepared to give a demonstration, so that none of your time is wasted. Your demonstration should take no more than five minutes so that your mentor has adequate time to ask you questions. - The following week: TP Grading
We will finalize and release TP grades as quickly as we can. However, finalizing is complicated even in person, and every TA is involved in grading every project to ensure that we are as fair and consistent as possible. We will provide feedback on your term project grade, but our grading process is very robust, so we do not accept regrade requests unless you believe we have completely missed a feature in your project (which is very very rare). Remember also that we automatically and carefully consider every semester grade which lies on an edge between one letter and the next. You will receive a fair and objective grade. - Policies and Rules
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.
Required Meetings: All the meetings listed in the schedule above are required. Given the challenges of remote learning this semester, we have added the following additional policies to help everyone make the best decisions and be the most effective:
- You cannot pass the term project without attending every required TP meeting.
- All TP-related meetings are required. You need to show up on time, and pay attention the whole time.
- If you show up late to a meeting, (or if you do not do a daily check-in by 10pm) you lose 5% of your score on the next TP deliverable per minute. If you are 5 or more minutes late, this counts as a missed meeting instead. You must schedule a new time to meet as soon as possible.
- If you miss a meeting (without a seriously good excuse), you must make it up. You will not just lose points, you will fail the term project (worth 20% of your semester grade) if you do not quickly make up missed TP meetings.
- To be more precise: if you miss a meeting (or fail to set up a required meeting in the first place), you have 18 hours to make it up. You may still lose points for missing the meeting, but those will be limited to that event. After two days, you will incur a direct deduction to your final term project grade. The drop will be 10 points the first time (worth 2% of your semester grade), and will double each subsequent time (so then 20 points, then 40 points, then 80 points). These accumulate, so if you miss 3 meetings without making them up, you will lose 70 points from your final term project grade (1.4 letter grades from your semester average).
- Under no circumstances can you skip a required TP meeting. If you have truly extenuating circumstances, you must let your TA know in advance, as soon as possible, and you must very quickly make that meeting up. You have to make up all missed TP meetings to pass the project.
- Note: We hope that nobody loses any points at all on anything. That's not our goal here. Our goal is to keep you positive and engaged and trying hard and meeting success on your term project. We also want to make sure that every minute of our TA's time is spent productively helping you forward. So let's do just that! Let's all work hard so you can have a wonderful, enriching, satisfying term project experience.
Collaboration: This project is solo, in that every student must do their own independent project. However, unlike other solo assignments, you may be richly collaborative in terms of helping each other, including viewing other students' code to help them debug, openly discussing designs and algorithms, etc. Using resources wisely is an important aspect of this term project. However, you still must conceive and understand your entire design of your project, and you must personally write every line of code that you submit for credit.
Prior Work: You may use code that you've written for past assignments, 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. For a citation example, see here. We will only grade you on code developed specifically for this semester's 112 term project. All un-cited term project code must be completed by you within the current semester. Also, any code from prior 112 assignments or the 112 notes must be cited as such and will not count towards your term project grade.
Office Hours and Piazza: there will be a new schedule of office hours during Term Project season. TAs 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. We encourage you to rely primarily on your term project mentor for larger strategic questions
Online Resources: You may use any materials whatsoever, including source code, designs, images, text, sounds, or anything else, from any sources you may discover online. However, you must very clearly cite each such use, so it is very clear what is yours and what is not, and in the latter case where the materials came from. We will grade you only on your original contributions from this semester, and we will penalize use of external materials without citation. This includes code that you wrote in a prior course, including 112. Note that you must also clearly cite code that comes from the course notes! Non-cited external code will receive a 15% penalty on TP1, a 25% penalty on TP2, and will be investigated as potential Academic Integrity Violation cases in TP3. Note that an egregious lack of citation may be considered an academic integrity violation, even on TP1. It must be clear to your mentor which code is purely original, which code is yours but based on external resources, and which is copied. You must cite your sources, always.
Submission: You will submit TP1, TP2, and TP3 as zip files on Autolab. If you don't know how to zip a file, learn how here. Please note that Autolab will not accept submissions larger than 10 MB. If your zip file is larger than this, submit the core part of your project to Autolab, at least including all your Python code and your readme file, and submit the rest to your mentor via some standard, reasonably secure file sharing method such as Google Drive.
Note: if your project requires more than 10 MB, it is your responsibility to submit a 10 MB subset that meets the submission requirements, and to also -- by the same deadline -- to provide your grader with easy access to your full project. We prefer that this be via online file sharing, such as Google Drive.
Extensions: We also generally do not provide extensions on TP deadlines, and so we do not allow students to submit the deliverables late. This is largely because submitting a deliverable late will leave you with less time for the next one and will only add stress without giving you any additional time. That having been said, if you have a medical or personal/family emergency and you do not believe that an extension will hurt your overall performance, email the professors directly to see if an extension can be arranged. Please note that extensions on TP3 are extremely rare and unlikely, as they impair our ability to have the whole staff grade your project fairly, and Friday is the final day of the semester. Barring the most extreme circumstances (typically involving hospitalization or equally dire circumstances) we will need you to turn in whatever you have for TP3 on time. Fortunately because you have almost a full week to work on this project, a last-minute emergency would still leave you with many days of prior progress.
- Deliverables
You will have 3 deliverables for this term project. TP1 will count as one quiz grade ("tpQuiz1"), and TP2 will count as a second quiz grade ("tpQuiz2"). These are not a traditional quizzes, but they will be entered in the quiz category in our gradebook. Typical median grades on TP1 and TP2 are around an 80, so they fit well in this category. Your TP-category grade will be determined solely by TP3, the last deliverable.
Your mentor will mostly assess your deliverables in person (well, over zoom), though they will not assign you a number grade until after consulting with other TAs in the class after the meeting. 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.
The purpose of the intermediate TP deliverables is to give you feedback, and the grade is part of that. Getting 100 is exceedingly rare, because there is always room for improvement. Just like the quizzes, median grades in the high-B or low-C range are typical, so do not view an 80 as an indicator that you are behind everyone else. If you do not like the grades you receive, however, take the feedback to heart, improve your work habits, and increase your rate of progress. Most students do, as reflected by their higher TP3 grade (the one that matters twice as much as every quiz combined).
- Daily check-ins (8-Aug through 13-Aug)
Starting on Sunday 8-Aug until you submit your project on Friday 13-Aug, you will need to check in with your mentor at least once each day, primarily to give them an update and to receive feedback on your progress and pacing so far. You will meet with your mentor over Zoom for TP1, TP2, and TP3 (see below) and these meetings can count as your check-in for those days. You will also need to meet with your mentor over zoom for your first check-in on Sunday 8-Aug. Depending on your progress, your mentor will let you know whether your check-ins on Tuesday 10-Aug and Thursday 12-Aug will be over Zoom or whether an email update from you will suffice. There are no points directly attached to check-ins, but you will receive significant deductions for missing a check-in or if you are not appropriately communicative and responsive to your TA. Check-ins should occur before 10pm ET each day unless otherwise specified, and you should arrange the time at least 12 hours in advance with your TA if not sooner.
- TP1 (due Mon 9-Aug at 8pm)
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 to your mentor in full. You can submit all the required files within a single zip file on Autolab, under the TP1 assignment. If your file is larger than 10MB, read here for info on how to submit.
Note: while there are some detailed requirements for design docs here, we ask that you please keep them very concise. Be thorough, but be brief.
- Project Plan [20 pts]
Write up a proposal file (in the file proposal.txt, or .docx, or .pdf) which should include the following components:
- Project Description [5 pts]: The name of the term project and a short description of what it will be.
- Structural Plan [5 pts]: A structural plan for how the finalized project will be organized in different functions, files and/or objects.
- Algorithmic Plan [5 pts]: A detailed algorithmic plan for how you will approach the trickiest part of the project. Be sure to clearly highlight which part(s) of your project are algorithmically most complex, and include details of the algorithm(s) you are using in those cases.
- Version Control Plan [5 pts]: A short description
and image demonstrating how you are using version control to back up your code. Notes:
- You must back up your code somehow!!!
- Your backups must not be on your computer (ideally, store them in the cloud)
- Preliminary Code [80 pts]
In addition to the design proposal, you should also submit code artifacts showing some early work on the project. This does not need to be a working demo; it should just be a real start towards solving the core problems of your project. For most students, 200-400 lines of decent code would indicate a good start.
- TP1 Meeting [0 pts]
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 25% of your TP1 grade, and you still have to make up the missed meeting.
- Project Plan [20 pts]
- TP2 (due Wed 11-Aug at 8pm)
Your TP2 deliverable consists of two components: a working demo and updated project plan docs. You should submit all the files in a single zip file to Autolab, this time under TP2. If your file is larger than 10MB, read here for info on how to submit.
- Working Demo [100 pts]
At this point, you should have a working demo of your project that meets your project's version of MVP (Minimum 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". Once your mentor confirms that your project has reached MVP status, you are guaranteed to get a Term Project grade of at least a 80% on the code portion of tp3.
- TP2 Meeting [0 pts]
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 25% of your TP2 grade, and you still have to make up the missed meeting.
- Updated Project Plan [0 pts]
Many students update their plans due to unforeseen problems or new ideas. You must add a new section to your plan, '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. Keep your old planning work, though you do not need to update these sections directly (the TP2 Update section is sufficient). If you do not add this update section, you will be penalized 5 points.
- Working Demo [100 pts]
- TP3 (due Fri 13-Aug at 5pm)
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 file, a demo video, and your updated design docs. Place all of your files into a single zip file and submit on Autolab, under TP3. If your file is larger than 10MB, read here for info on how to submit. Recalling that TP1, and TP2 count towards a "tp-quiz" in the quiz category, TP3 will be graded as the main Term Project, and constitutes the entire "term project" category.
- Project Codebase [90 pts]
The codebase should include all your python files and any other files (images, etc.) required to help your project run. Your project should run robustly, should be algorithmically complex, and should have decent user experience. It is ok if there are some bugs and room for improvement (after all, you only have one week) but it should feel "finished." It may also have a well-designed user interface, depending on the project.
When grading your project code, we also consider effort, as demonstrated to your TP mentor. The term project should take up the majority of your 15-112 time in the last week of the semester. There are no recitations or other assignments in the final week of the summer semester, so we would expect you to invest about 15 productive hours into your project. Spending this time and showing real effort and progress in mentor meetings will factor into your score. - Readme File [5 pts]
You must include a new file, readme.txt, which must include the following components:
- A short description of the project's name and what it does. This may be taken from your design docs.
- How to run the project. For example, which file the user should run in an editor. If your project uses data/source files, also describe how the user should set those up.
- Which libraries/modules you're using that need to be installed, if any. If you can include the library in the submission, that is preferred.
- A list of any shortcut commands that exist. Shortcut commands can be used to demonstrate specific features by skipping forward in a game or loading sample data. They're useful for when you're testing your code too!
A competent programmer should be able to run your project after reading the readme file, so make sure to include all necessary files in your submission! - Project Demo [5 pts]
There are two parts to the project demo: the video demo and the live demo.
- Video Demo [2.5 pts]:
Important Note: since a video that reasonably closely follows our submission specs is essential for our grading purposes, we will not grade any project that does not include a reasonably well-made video. This means that you will receive a 0 without one.
This should be a 1-3 minute video (and no more than 5 minutes in any case) that captures the main idea of the project. It should show the most important and coolest features of the project, with narration to explain how it works. This demo should not provide a full walkthrough of the whole project, and does not need to cover every single feature; think of it as more of a trailer for the project as a whole. Your video demo should be uploaded to YouTube (or some other video hosting service), and your submission on Autolab should include a file called demo-video.txt that contains 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. As for creating the videos, one approach is to use zoom -- create a meeting just with yourself, share the screen (with sound if you wish), record the meeting, and you're set. Also, on Macs, Quicktime is a great option. Another solid choice is Screencastify -- a Chrome plugin that can record the entire screen easily (not just Chrome), integrates directly with Drive and YouTube, and is overall really easy to use. That said, you can use any video creation software you wish. Also, note that parts of some demo videos may be selected to appear in the TP Lightning Round video. - Live Demo [2.5 pts]: In your TP3 meeting, you will need to provide a live demo to your mentor. This demo can be up to 5 minutes long and should cover all the core components of the project, especially anything your mentor might not notice when they test the code themselves. This is your chance to convince your mentor that you deserve a great grade!
- Video Demo [2.5 pts]:
- Design and Documentation [0 pts]
Your submission should include the design directory from the previous deliverables. The proposal 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 your mentor's ability to grade your project, as they may not be aware of new features you've added.
- Style [0 pts]
Writing your term project code with good and consistent style will make your life much easier! In particular, we expect that you will organize your code in a sensible way, and that you will have a short comment at the top of each file describing what the file does. We will not directly grade your code for style, but we reserve the right to deduct points for egregiously poor style.
- Project Codebase [90 pts]
- Daily check-ins (8-Aug through 13-Aug)
- Helpful Guides
Here are some short and helpful guides on some TP topics: