15-112 Term Project Assignment

Due: Tue 3-Dec at 6: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!!!



1. 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 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.

The term project is very open-ended, but there are a few restrictions:

2. Schedule

Many events happen during Term Project Season! This is your guide to all of them.

Weeks 9 and 10

Week 11

Week 12

Week 13

Last Week 14

3. Minimum Viable Project

Throughout this document you’ll find references to Minimum Viable Project (MVP). Minimum Viable Project is that state you need to get your project to by TP2. An MVP has all of the basic features of the project, is mostly bug free, and has a usable interface. Assuming your project is sufficiently complex, an MVP project is worth 70% of the TP3 points. To get higher than this, we’re looking for additional features and polish above and beyond the basics.

What sort of things are we looking for to go beyond the basics?

Remember: Your goal is to get to MVP by TP2. It would be wise to focus on your core experience before striving for advanced features. A non-functional project that tried to do lots of things will not receive an MVP score. After you’ve reached MVP, then spend time on the advanced features to further raise your score.

4. 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:

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.

5. 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.

6. Tech Demo

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.

6. Deliverables

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 the general case, your TP grade will be determined mostly by TP3, the last deliverable.

The purpose of the intermediate TP deliverables is to give you feedback, and the grade is part of that. Getting 100 in the intermediate deliverables is exceedingly rare, because there is always room for improvement. 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!).

  1. TP1 (due Tue 19-Nov) [5 pts]

    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 Gradescope, under the TP1 assignment. If your file is larger than 10MB, read here for info on how to submit.

    • Project Proposal [2 pts] Write up a proposal file (in the file proposal.txt, or .docx, or .pdf) which should include the following components:
      • Project Description: The name of the term project and a short description of what it will be.

      • Competitive Analysis: 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: A structural plan for how the finalized project will be organized in different functions, files and/or objects.

      • Algorithmic Plan: A detailed algorithmic plan for how you will approach the trickiest part of the project.

      • Timeline Plan: A timeline for when you intend to complete the major features of the project.

      • Version Control Plan: A short description and image demonstrating how you are using version control to back up your code. You must back up your code somehow!!!

      • Module List: 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.

    • Preliminary Code [3 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.

    • TP0 Meeting [0 pts] You’ll meet with your mentor to finalize your idea. If you miss this meeting, you will be penalized 2.5 points.

    • 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 2.5 points.
       
  2. TP2 (due Tue 26-Nov at 6:00pm) [5 pts]

    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 Gradescope, this time under TP2. If your file is larger than 10MB, read here for info on how to submit.

    • Working Demo [5 pts] 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

    • 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 2.5 points.

    • 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, ‘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.

  3. TP3 (due Tue 3-Dec at 6:00pm) [90 pts]

    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 Gradescope, under TP3. If your file is larger than 10MB, read here for info on how to submit.

    • Project Codebase [85 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.

    • Readme File [0 pts] You must include a new file, readme.txt, which should 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.

      • How to install any needed libraries. 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!

      If you do not include a correct Readme file, we will deduct up to 5 points.

    • Project Demo [5 pts] There are two parts to the project demo: the video demo and the live demo.

      • Video Demo [2.5 pts]: This should be a 1-3 minute video 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 Gradescope 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: 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.

      • 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 and the rest of the staff might not notice when they test the code themselves.
    • 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 our 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 certainly into more than one python file), 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 egregious style errors.

7. Grading