- Term Project Description
Your task is to design and implement a program of your choosing. Your project 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.
You have an extended period to finish this assignment, with no other required assignments during the last three weeks, and no other
major course responsibilities between midterm2 and the (optional) final exam.
You are expected to invest at least 25 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 25-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:
- Schedule
Many events happen during Term Project Season! This is your guide to all of them.
- In Week 8: Term Project Preview
We shared the term project preview on the schedule,
including the steps you should start taking in preparation at this point.
- In Week 9: TA-led Mini-Lectures
This week everyone also attended
at least one TA-led mini-lecture to learn about new algorithms or modules you can use in your project. This was worth some points on hw10.
- In Week 9: TA Ideation Meetings
Also in week 9, you should meet with a TA (not necessarily your mentor)
to help you be most effective
during the ideation phase of your term project.
- In Week 10: TP Assignment
The TP is formally assigned and discussed in lecture. TP decision form due Wednesday 9-Nov at 5pm!
We'll assign TP mentors over the following weekend (or sooner, if possible).
- Wed 9-Nov: TP Decision Form due at 5pm!
- You must fill out this form by 5pm on Wednesday, 9-Nov! At this point you will have read this document in its entirety, you will have had an ideation meeting with a TA, and you must decide whether or not you will complete the standard self-directed term project or if you are opting into the Bee Project (described below and in an upcoming Piazza announcement). Note: if you do not fill out the form by 5pm 9-Nov, you will receive a 10 point deduction on TP0 per day until we receive it. If we have not received your form submission by Monday 14-Nov, you will begin receiving large deductions from TP3. Remember, it is your responsibility to ensure that this and all forms are submitted correctly, so be sure to check for the confirmation email from Google, and email us if you believe you submitted but do not receive that email within an hour.
- Sat 12-Nov: LAST DAY for tech demos
- Tech Demo
If you wish to use any tech outside of Python and what we have covered
in the notes, then you need to do a tech demo by this date.
This includes if you
wish to use any other libraries, modules, API's, hardware, and so on.
If this applies to you and you're doing a tech demo,
it's a good idea to meet with your mentor
(or at least with other TA's and/or course faculty)
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 your TP Mentor that they believe you have
a strong chance of using it productively in your TP.
If you do not pass
the tech demo by today,
then you will need to restructure your project to work without the tech, at least until you reach MVP. We will not extend the tech demo deadline. You have one chance so start early. But, remember that you do not have to use tech, nor do we recommend it, nor does it 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, your mentor 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, obeying MVC.
- Mon 14-Nov 5pm: TP0: Progress Update + Tech Demo
- Term project design docs due
Submit your design documents on Autolab.
- Progress Update
Meet with your TP Mentor for 10 minutes to check on your progress,
discuss project ideation,
design decisions, maybe even work on a bug or two.
In your TP0 meeting, you will finalize your TP idea with your TP Mentor. If you do not have a TP idea, you would be behind on your TP progress, and your mentor will help you decide on one at this point.
The point is: as of TP0, you are committed to your project's
basic vision and goals.
- Sun 20-Nov 5pm: 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
(typically 300-600 lines, though this varies by project).
- Wed 30-Nov 5pm: 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.
- Wed 7-Dec 5pm: 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 design files related to the project.
- Thu 8-Dec: TP Showcase (in lecture)
Attend the Term Project Showcase in your assigned lecture (sorry,
we do not have capacity for everyone to attend at the same time),
and watch demos of amazing projects by your fellow students.
Note: this event is required, but it is also a lot of fun!
- Wed 7-Dec to Fri 9-Dec: 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. If you miss your TP3 meeting, not only will you have the standard
missed-meeting deduction, but we will grade your project without your input, which will likely
result in an even further lowering of your grade.
- Mon 12-Dec to 14-Dec: TP Grades Released
We will finalize and release TP grades as quickly as we can.
We are committed to being as fair and
consistent as possible in our grading, so this may take some extra time.
That said, we will get as many grades finalized as
early as possible, so you have the most information available
when you have to decide whether or not to opt-in to take
the optional final exam.
- Grading Criteria
Your term project will be graded using four general categories. There is some overlap, but you should pay attention to each of these to ensure the best grade:
- Code Organization: Is your code clean, well-organized, and written with good, consistent style? Can someone who is reasonably proficient in Python easily understand your code and how it works? If needed, could you explain how your code works to someone else? Using object-oriented programming, well-named variables, comments, and descriptively-named helper functions can all help improve clarity and demonstrate that you know what you're doing.
- User Experience: Your project must be richly interactive, and the user experience should be positive and engaging. Is your project enjoyable to use, and user-friendly? Does it have several interesting and engaging features? Does the experience feel complete and cohesive?
- User Interface: Have you put some time and effort into making your project aesthetically appealing? Is the interface clear, readable, not too cluttered, and self-explantory? Can someone unfamiliar with your project quickly understand how to interact with it? It's ok if your project is not a work of trained artistic brilliance, but the user interface should make it evident that you've spent some time polishing your project's appearance. (For example, if you are making a chess game, use images or something visually interesting to represent the pieces, rather than just the letter "K" for King, "P" for Pawn, etc.)
- Algorithmic complexity and sophistication: This category is difficult to describe, but in short, are you demonstrating your 15-112 skills? Algorithmic complexity might come from clever and effective use of data structures, evidence of sophisticated problem-solving, interesting algorithmic approaches to implementing your features, good use of relevant concepts like OOP, etc. Avoid hard-coding, repetitive conditionals, or exceptionally inefficient approaches where more efficient alternatives exist.
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, TAs 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.
-
- Bee project option
We will be posting an alternative term project option on Piazza that may be of some interest if any of the following are true:
- If it is very important that you get a low B on the term project and need a more safe route to that goal, but you are ok with not getting an A
- If you can't come up with any ideas or if you don't think you'll be able to create an algorithmic / structural plan for a project with multiple features
- If you feel like you need a more scaffolded project with fewer open-ended decisions.
We will share a video of the completed bee project along with a list of which features we expect, some suggestions for how to implement those features, and the order in which we believe you should implement them. This project is still open-ended, but the video and document we provide will serve as scaffolding to help you efficiently work toward a passing project. The project itself is a bee-themed game that involves gathering pollen and spreading it to other flowers. Successfully implementing the features will require you to use many 112 concepts, including OOP, different data structures, and efficient functions. If you implement the features to the level of quality we describe and show in the video, you will receive an 80 on TP3 (a B). It is possible to exceed that grade if you substantially add on additional complex feaatures to the project, but note that because the idea and structure of the project are given to you, it will be more difficult to reach an A compared to a project of your own design with similar complexity. If your goal is an A on the project, you probably do not want to choose this option. See upcoming Piazza posts for more details.
- 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.
We have added the following additional policies to help
everyone make the best decisions and be the most effective:
- 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, 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, and you will be required to send an email/video update (or, at our discretion, you will be required to schedule a new time to meet as soon as possible).
- If you miss a meeting due to an unexcused reason (or if you fail to set up a required meeting in the first place), you will incur a deduction on the next deliverable for missing the meeting. If you miss two meetings, you will incur a direct deduction to your final term project grade. The drop will be 5 points the first time (worth 1% of your semester grade), and will double each subsequent time (so then 10 points, then 20 points, then 40 points). These accumulate, so if you miss 4 meetings without making them up, you will lose 70 points from your final term project grade (1.4 letter grades from your semester average).
- 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, while also respecting the time constraints and busy schedules of our TAs.
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.
For any parts of your project where you received substantial help from someone else in any
way, you must include a citation that makes that very clear.
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 Hack112 must be cited as such and will not count
towards your term project grade, though you can certainly use this code and your ideas from Hack112 as a great starting point.
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.
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, at a minimum, a 15% penalty on TP1, a 25% penalty on TP2, perhaps
more depending on the nature of the offense,
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 TP0. 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 each deliverable as a zip file 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.
Grace Days: These only apply to homework and not to the
term project. You may not use any grace days for any TP deadlines.
Extensions: We also generally do not
provide extensions on TP deadlines, and so we do not
allow students to submit the deliverables late. That having been said, if you have a medical or
personal/family emergency, email the professors to see if an extension can be arranged.
- Deliverables
You will have 4 deliverables for this term project. TP0 and TP1 combined will count as one quiz grade ("tpQuiz1"), and TP2 will count as a second quiz grade ("tpQuiz2"). These are not traditional quizzes,
but which will be entered in the quiz category in our gradebook.
Your TP grade will be determined solely by TP3, the last deliverable.
Your mentor will mostly assess your deliverables in person
or 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).
- TP0: Project proposal
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.
Your Project Proposal should be submitted as a single zip file containing one or more files:
- Project Proposal Components [15 pts]
Write up a proposal file (in the file proposal.txt, or .docx, or .pdf) which should include the following components:
- Project Description [2.5 pts]: The name of the term project and a short description of what it will be.
- Similar projects [2.5 pts]: A 1-2 paragraph analysis of similar projects you've seen online, and how your project will be similar or different to those.
- Structural Plan [2.5 pts]: A structural plan for how the finalized project will be organized in different functions, files and/or classes.
- Algorithmic Plan [2.5 pts]: A 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 difficult, and include some details of
how you expect to implement these features.
- Timeline Plan [2.5 pts]: A timeline for when you intend to complete the major features of the project.
- Version Control Plan [1.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)
- Module List [1 pts]: A list of all external modules/hardware/technologies you are planning to use in your project. Note that any such modules must be approved by a tech demo. If you are not planning to use any additional modules, that's okay, just say so!
Storyboard [5 pts]
Generate a storyboard that demonstrates how a user would interact with your finished project. A storyboard is just a series of sketches showing (roughly) what your project will look like. Your storyboard should have at least six panels, and at least three of those should demonstrate features within the project. You may scan or take a picture of your storyboard and include it in the directory as the file storyboard.png (other acceptable filetypes include .gif, .jpg, and .pdf).
- Include any preliminary code files you have already created at this
stage. Some code at this stage would be helpful, but not necessary.
It may be prototype code, and so perhaps may
not be part of your final project. It also may or may not have
any user interface.
- Your submission MUST be a SINGLE zip file submitted to Autolab. You may submit multiple times, but we will only look at your last submission. This is true for all term project deliverables.
You will not receive any credit if you do not submit a zip file. If your file is larger than 10MB, read here for info on how to submit. Ask for help if you do not understand how to create a zip file after reading this whole document.
- Note: Your TP0 and TP1 collectively count for one quiz grade.
- TP1
The TP1 deliverable consists of two main components: an updated 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 must 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.
- Preliminary Code [80 pts]
You should submit code artifacts showing your current 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, 400-600 lines of decent code would indicate a good start, but we do not grade based on the number of lines you submit.
- TP0 Meeting [0 pts]
You should have met with your mentor the previous week to discuss your idea. If you miss this meeting, you will be penalized 25% of
your combined TP0+TP1 grade.
Also, if you missed the meeting, you will need to send a prompt update and/or make up the meeting
as described in the "Required Meetings" section above.
- 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 combined TP0+TP1 grade, and you will need to send a prompt update and/or make up the meeting
as described in the "Required Meetings" section above.
- Timesheet [0 pts]
- Updated Design Docs [0 pts]
Many students update their design plans due to unforeseen problems or new ideas. You must add a new section to your design proposal, 'TP1 Update'; in this section, you should list any design changes you have made. If you made no changes, simply say so in this section. You do not need to update your storyboard, but you should keep it in your design directory. If you do not add this update section, you will be penalized 5 points.
In addition to the main deliverables, you must also submit time data
here. To do this, you should keep track of the time you spend on the project and enter it into the form. If you do not submit the timesheet, you will be penalized 5 points on the deliverable.
- TP2
Your TP2 deliverable consists of two components: a working demo and updated design 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 will need to send a prompt update and/or make up the meeting
as described in the "Required Meetings" section above.
- Updated Design Docs [0 pts]
Your submission should include the design directory from the previous deliverables. The proposal should have a new section, 'TP2 Update', which includes any design modifications made since the previous update (or says that no changes were made if no changes were made).
- Timesheet [0 pts]
Fill out another timesheet
here
to include the hours worked in the period between TP1 and TP2. If you do not fill this out, you will be penalized 5 points.
- TP3
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 TP0, TP1, and TP2 count towards a "tp-quiz"
in the quiz category, TP3 will be graded as the main Term Project, and is constitutes the entire "term project" category.
- Project Codebase [90 pts]
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.
When grading your project code, we also consider effort. The term project should take up the majority of your 15-112 time in the last 2+ weeks of the semester. The class is 12 units, which means 12 hours a week or 30 hours in 2.5 weeks; after subtracting 5 hours (for some additional lectures and other matters), this leaves 25 hours which you should spend on the term project. This means you need to spend at least 10-12 hours a week (naturally, the earlier you start on your term project, the less time per week you'll need to invest). 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 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!
- 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.
- Timesheet [0 pts]
Fill out one final timesheet
here
to include the hours worked between TP2 and TP3. We will not apply a deduction to your grade if you forget to fill out this timesheet, but we will withhold your TP3 grade until you do so.
- Helpful Guides
Here are some short and helpful guides on some TP topics:
-
TP Guide on Features
-
TP Guide on MVP
-
TP Guide on Tech Difficulties
-
TP Guide on Game AI
-
TP Guide on Mazes
-
TP Guide on Pathfinding
-
TP Guide on Terrain