CMU 15-110: Principles of Computing
Term Project
Due: Wed 1-May at 8pm (no extensions)
- Optional!
- This term project is optional. You can safely ignore this entire document and everything relating to the term project option.
- The point of the term project is to give you a chance to apply your emerging coding skills to design and build an app of your choosing, something a bit larger and more complex than what we have built so far, with support and guidance from the 110 TA's and faculty.
- The point is not to save time or to give you a way to avoid a hw or a quiz or two. The term project option will not save time. It will probably take more time than just doing the hw and taking the quizzes. So please do not elect the term project option unless you seriously want to build something original! But if you do, go for it! And we're here to help!
- Again: this term project is optional. If you elect this option, you need to fill out the TP Sign-Up Form by Mon 15-April.
- Once you fill out that form, here is how grading is affected:
- Your hw7 grade will be replaced by your term project grade. So you are not expected to do hw7.
- So long as your quiz6 and quiz7 grades are >50, your quiz6 and quiz7 grades will be replaced by your term project grade (so long as that helps you -- if your quiz6 or quiz7 scores are actually higher, you can keep them). So you should still learn the material for those quizzes, at least to get a >50 score on those quizzes. Also, note that the material in Unit7 and Unit8 may still appear on the final exam.
- Entirely solo!
- All work for this project must be entirely solo. No group projects allowed.
- That said, as always, the course faculty and TA's are here to help you, so you always have guidance and support. Beyond that, the same solo rules as always apply. See the syllabus for details.
- Faculty Permission!
There are two categories that require explicit faculty permission via email prior to submitting the tp sign-up form:- Students with grades below 85
To be sure that everyone has the time to learn the core course material well, if your semester grade is below 85, then you need explicit faculty permission via email prior to the Monday deadline in order to do a term project. - Students doing a project without a rich graphical user interface
While you can do most anything (within broad reason), experience indicates that traditional graphics-based projects like standard arcade-style games tend to be the most reliable pathways to success. You certainly can do other kinds of projects, including projects which have very little GUI (graphical user interface), but in that case you need explicit faculty permission via email prior to the Monday deadline.
- Students with grades below 85
- Entirely Original!
- All work that you submit for a grade for this term project must be entirely original. Do not base your project on some other pre-existing project of any kind. Make it from scratch, make it original.
- The term project is worth 1 hw and 2 quizzes, so we expect and will grade based on about 15 hours per person of strong effort, with the high quality that would be reflected by that serious investment.
- Your work should be strikingly original, and in particular all the code (except any code from the course website, so long as you properly cite it) must be entirely original, written by you, without consulting any other sources. So, for example, it would not be acceptable to find some existing project online (and there are tons of them, of course), and translate or adapt or modify or in any way use it, even if just using it as a high-level guide. Do not use any existing projects in any way. Be entirely original!
- That said, "original" means "original to you". So it's fine for you to write the next Fortnite (though may we humbly suggest maybe more like a lovely version of Frogger). Even though these already exist, so long as you have not written them yourself, you are free to write them here. Plus, in so doing, you are strongly encouraged to put your own unique spin on them.
- Supported!
- Each project will be assigned a term project mentor (from among our TA's). Your mentor will meet with you, for up to half an hour, twice each week until the term project deadline to provide guidance and advice, and will attend your grading session not as a grader but more as an advocate to be sure the graders understand the full scope and sophistication of your project.
- As with any other part of the course, you may also attend faculty and TA OH, and use piazza, to obtain help on your term project.
- That said, we of course expect you to be diligent in working through the obstacles one naturally encounters when building something complex. We can help, a bit, but within clear limits, and in the end the onus is on you to build a working app.
- What to Build
- Using Python, build a working app. Unless you obtained explicit faculty permission via email (as noted above), your app should have a rich, interactive, graphical interface based on our animation framework (so you may not use PyGame, for example).
- It may be a game, or an educational app, 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.
- However, your app must have a clear, measurable, and hence gradeable behavior. Thus, for example, computer-generated art or music will generally not be allowed here, since there is no specific and measurable outcome we can grade against.
- You may not use any third-party modules. The only code you may use is from this semester's course website.
- Dates and Deadlines
Wed 10-Apr term project is assigned Mon 15-Apr tp sign-up form is due (no extensions) Wed 24-Apr at 8pm tp1 (a checkpoint of partial progress) is due (no extensions) Wed 1-May at 8pm tp2 (the full completed term project) is due (no extensions) Wed 1-May through Thu 2-May tp grading sessions (as practicable) Fri 3-May TP Showcase (in class) Sun 5-May tp grades released - Extensions
You have 3 full weeks for this project, which is enough time to deal with usual conflicts as well as unexpected matters. As such, there are no extensions (except in truly extreme circumstances), so please be sure to submit what you have by the Wed 1-May 8pm deadline. - What to Submit
- For tp1 and the tp2, each submission will be a single zip file (no exceptions!) containing all the files required for that submission, even if it's just a single file. To do this, first create a folder named tp1 or tp2, and place all your files in that folder. Then, to submit, zip that folder, and submit that zip file (tp1.zip or tp2.zip). If you do not know how to zip a folder, ask your mentor, or go to OH and a TA will gladly help you. Note that technical problems with zipping folders does not qualify for an extension, so please learn how to zip folders well ahead of the deadlines.
- While the top-level file must be a single zip file, as in tp1.zip, the text files inside there can be any one of these formats: html, pdf, txt, doc, docx, py. No other formats are allowed except for media files, which can be in any reasonable format (png, jpg, etc).
- For all videos: do not include any videos directly in your zip file! Instead, upload the videos to some online file sharing site (YouTube, Google Drive, box, any other reasonable choice), and include a one-line document with a link to a video. For example, you could include this in tp1-video.txt:
see https://www.youtube.com/watch?v=MOWDb2TBYDg
Be sure to test your links from a computer where you are not logged into that site as yourself, to be sure that your TA's can successfully access them for grading! - Your tp1.zip file is limited to 10 megabytes, and tp2.zip to 20 megabytes. Since they do not contain videos, this limit should be quite reasonable. If your submission would still be too large, remove some of the larger files (presumably images) and do the same with those as you did with videos -- store them in a file sharing site, and include a file with a link to them in your submission.
- tp1 (the tp-checkpoint):
The point of tp1 (the tp-checkpoint) is to give you early feedback on your project, and to be sure you are making adequate progress. It is graded, but not at the same level of scrutiny as tp2, and the grade counts for 10% of your overall tp grade. While tp1 is not a high-stakes event, we encourage you to take it seriously, and try to make considerable progress by then, rather than leave this larger project to the last moment. In any case, your tp1 submission should include these files: - project-summary
A half-page summary of your ideas for your project, with some brief description of progress to date. - code
All the code you have written so far (in appropriately named Python files). - how-to
This explains how to run, use, and grade your app. - tp2 (the full term project):
Your tp2 submission should include these files: - project-summary
This may be the same as what you submitted for tp1, but in any case it should be a high-level overview of your project. The graders will read this file, so include anything you may want them to bear in mind while grading. - code
All the code you have written (in appropriately named Python files). - how-to
This explains how to run, use, and grade your app. - video
This file includes a link (just the link) to a short (1-4 minute) video showcasing your app. Be sure to highlight the important elements that a grader might want to consider when grading it. Also, make the video so that it could (if you wish) be included in your online portfolio, for example so that a future employer might view it (again, if you wish) to understand more about what you did on this project. As for the production value, this is not a video editing course, and we do not expect anything near professional production value. But we do expect you to try to make it reasonably nice, say with a splash screen with your name and the project name, and perhaps with some background soundtrack (not required, but nice), etc. But the basic requirement is that we can use your video to clearly understand the important elements of your project.
- For tp1 and the tp2, each submission will be a single zip file (no exceptions!) containing all the files required for that submission, even if it's just a single file. To do this, first create a folder named tp1 or tp2, and place all your files in that folder. Then, to submit, zip that folder, and submit that zip file (tp1.zip or tp2.zip). If you do not know how to zip a folder, ask your mentor, or go to OH and a TA will gladly help you. Note that technical problems with zipping folders does not qualify for an extension, so please learn how to zip folders well ahead of the deadlines.
- Grading
- tp1
As noted above, we will grade tp1 on a high-level only, and then fairly liberally. That said, tp1 grading will be as such: - Compelling project idea [20 pts]
- Clear and compelling summary [20 pts]
- At least "one week's worth" (say, around the size of Concentration from hw5) of working or mostly-working code [50 pts]
- Formatting (proper zip file, etc) [10 pts]
- tp2
Given the very wide variety of projects, and subjectivity in grading these, and the fact that this is the first time we are running this version of the term project in 15-110, we will adapt our grading as appropriate per each project. That said, here are some of the dimensions we will use (as appropriate) in our grading: - Fun and engaging app
- Production quality
- Compelling video
- Adheres to project specs
- Demonstrates the scope, quality, and sophistication expected
- In general, we would expect at least 1.5x the size of Concentration from hw5, with similar quality and sophistication.
- Formatting (proper zip file, etc)
- Etc (we will add more criteria as appropriate)
- tp2 grading session
In the days following tp2, students will meet with their tp mentors and also with one or two TA's for a tp2 grading session. This should take about 15 minutes, and is required in order to obtain your grade on tp2. These sessions will be designed to help you give the TA's a full picture of what you did, and why it deserves the high grade it hopefully earns. - tp normalization
Soon after tp2, the course staff and faculty will meet (without students) to discuss the projects, and to "normalize" the grading. The goal is for us to have very high confidence in the consistency of the grading, despite the rich variety of the projects themselves, and the distributed grading sessions.
- tp1
- Have Fun!
-
While a central point of this project is for you to design and build a more complex app of your choosing, another key point is for you to have some fun while doing so. Truly, enjoy. Have fun with this!