CMU 15-110: Principles of Computing
Term Project
Due: Tue 4-Dec at 8pm (no extensions)
- Overall
- You should work in groups of 2. You may work solo, but we recommend in a group of 2.
- Group members may be in different recitations or lectures.
- Group members will receive the same grade. Both must be present at the in-person grading session. See "Grading" section below for details.
- Group members are required to make equal investment of time and energy into the project. Failure to do so may result in failing the term project and the course.
- All work for this term project must be 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 more than 3 homeworks, 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.
- While the bulk of your work should be strikingly original, you may use any materials whatsoever, including source code, designs, images, text, sounds, or anything else, from any sources you may discover. You just need to 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. And while you may include external materials, you will be graded solely on your original contributions.
- Part 1: Make an interactive game or activity about CS
- Choose some CS topic, whether it is one that we covered or not. It should be a topic that is appropriate for novice programmers, or for people who don't know anything about Computer Science, to learn.
- Create an interactive game or activity to help students learn this topic. We expect considerable effort invested into making a clever, fun, engaging game or activity where players learn about or make use of an important idea from CS.
- You may program the game, say using Python and CS Academy, but you may also choose not to do any programming at all for your term project.
- For inspiration, you might look at CS Unplugged (see here). You should not just use one of those activities, but they may inspire you for ideas of the kinds of activities you could create.
- That said, we will take a broad view of "game or activity". It could be more of an instructional tutorial. But it must be interactive, and it must be fun and engaging and educational and result in people learning a CS topic.
- Test your game or activity (say, at the in-lecture TP-a-thon) on other students. See how they like it, and see if they actually learn from it. Then, do so-called iterative design: modify and improve your game or activity based on your user studies, and then do more user studies to confirm that your modified game or activity is in fact better.
- What to submit:
- A writeup of how to play your game or do your activity
- All the physical parts, if any, necessary to play it (board, pieces, etc)
- A short (1-4 minute) video showcasing your project. Be sure to highlight the important elements that a grader might want to consider when grading your project. 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. Also, your video should include at least some excerpts from your tp-a-thon user study video showing students from your user studies playing the game or activity. 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.
- A reflection piece describing your iterative design process -- what did you discover that needed improvement, and how did you improve it?
- A future work section, where you describe some clever ideas you have to make the game or activity even better, should you have the time to do so.
- Part 2: Make a video about CS
- Choose some other CS topic -- an entirely different topic from the one you used in Part 1. It should be a topic that is appropriate for novice to intermediate programmers, or for people who don't know anything about Computer Science, to learn.
- Make a fun, engaging, informative, educational video about that topic.
- The video has to be at least 5 minutes, and at most 10 minutes.
- You can be really clever and original here. For example, you can act in character as an important historical figure in CS. Or you can be richly artistic. Or it can be a compelling video about how CS is important or applicable to some area (Business, Law, Medicine, Art, Music, etc). Or really anything. So long as it is genuinely informative and educational about an important CS topic.
- It should be substantive, with some solid technical details.
- While we respect that you are not video production experts, the video should reflect solid production value, including a title page, a list of authors, some basic video effect such a fade, and some well-chosen background music to keep it engaging. Within broad reason, production quality will influence your grade.
- The Awesome Other Option
While we expect most of you to follow the plan as described above, we recognize that a few of you might have your heart set on doing something else, something really awesome and different and extremely compelling, but that does not fit the projects as described. If you are so inclined, you can submit an "Awesome Other" TP proposal to the course faculty prior to the tp1 deadline. If accepted, you may do that project in lieu of the the project described above. We would expect even greater dedication to such a project, so count on 20-25 strong hours of investment, as we will grade with that in mind. That said, this is a chance for you to pursue any CS-related project (if approved). Note that our approval will depend on numerous factors, including your 110 performance to date, as well as the relevance and general feasibility of the project. - Dates and Deadlines
- Extensions
You have nearly a full month 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 Tue 4-Dec 8pm deadline. - What to Submit
- For tp1 and 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, 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.
- For tp1 and tp2, the student with the andrew id that comes first alphabetically will make the full submission (submitted to autolab as a single zip file). The other student (with the andrew id that comes second alphabetically) will submit a single text file (still in a zipped folder) with a one-line statement that simply says their project was submitted by the other student (mentioned both by name and andrew id).
- 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 the grade is not part of your tp grade -- rather, tp1 is included as half of the so-called tp-quiz (so it is not a high-stakes event). Still, 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-members
List the full names and andrew id's of the project members. - project-summary
A one-page summary of your ideas for your project (both parts), with some brief description of progress to date - references
A list of references you are using, or plan to use. References should include a URL to them (if that's applicable, as it generally would be). Do not include a vast sea of references. Just include the ones you really intend to use in your tp2 submission. This should be around 5-15 well-chosen references. While "well-chosen" is subjective, we expect you to show the maturity to select legitimate, informative, compelling references that contribute meaningfully to your project. - tp2 (the full term project):
Your tp2 submission should include these files: - project-members
List the full names and andrew id's of the project members. - 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 both parts of your project. - references
This is the same as in tp1, only now you should only include those references that you actually used in either part of your tp2 submission. Again, this should be around 5-15 well-chosen references. - part1 (a folder)
Create a folder in your tp2.zip file, named part1, and in that folder place these files (all described above) - writeup
- video (contains a link to the actual video)
- reflection
- future-work
- any other files you think we may need to grade your project
- part2 (a folder)
Create another folder in your tp2.zip file, named part2, an din that folder place these files (all described above): - video (contains a link to the actual video)
- any other files you think we may need to grade your project
- Grading
- tp1
As noted above, tp1 will be included as part of a quiz grade (it will be half of the tp-quiz grade), so it counts but it is not a high-stakes event. The point of tp1 is to give you some early feedback on your ideas, and to perhaps help motivate you to get started before Thanksgiving break. As such, we will grade tp1 on a high-level only, and then fairly liberally. That said, of the 50 points available for tp1, the grading will be as such: - General project ideas [10 pts; 5 pts for each part]
- Clear and compelling summary [15 pts]
- Well-chosen references [15 pts]
- Formatting (proper zip file, etc) [10 pts]
- tp-a-thon and tp-showcase
We will have a "term-project-a-thon" in class later this semester. On that date, everyone attends class and runs user studies on each other, as noted above. Simply attending this date gives you 25 points on the tp-quiz. Also, on the last day of class (Fri 7-Dec), we will have a "term project showcase" also in class. Simply attending this date gives you 25 more points on the tp-quiz. - 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 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 in our grading: - Relevance to Computer Science
- Fun and engaging content
- Educationally rich content
- Production quality (both of the game/activity, and of the video)
- Clear and compelling documentation
- Well-chosen references
- Adheres to project specs
- Formatting (proper zip file, etc)
- Etc (we will add more criteria as appropriate)
- tp2 grading session
In the several days following tp2, but as soon as possible (and before that Sunday in any case), students will meet with one or two TA's for a tp2 grading session. Both members of the team must be present at this meeting. This should take about 15 minutes, and is required in order to obtain your grade on tp2. In this time, the TA's will ask questions of each team member, and only that team member will respond to that question (so again, please be sure that both of you have invested equal effort in the project!). The questions will not be exceedingly challenging. Rather, these sessions will be designed to help your team give the TA's a full picture of what you did, and why it deserves the high grade it hopefully earns. - tp normalization
On the Sunday following tp2, the course staff and faculty will meet (without students) to discuss as many projects as we can over several hours, 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. - Have fun!
While a central point of this project is for you to learn more about Computer Science, another key point is for you to have some fun while doing so. Truly, enjoy. Have fun with this!
Fri 9-Nov | term project is assigned |
Tue 20-Nov at 8pm | tp1 (tp-checkpoint) is due (no extensions) |
Tue 4-Dec at 8pm | tp2 is due (no extensions) |
Wed 5-Dec through Sat 8-Dec | tp2 grading sessions |
Fri 7-Dec | TP Showcase (in class) |
Sun 9-Dec | tp2 grades released |