Term Project Assignment
Important Notes
-
Read this carefully: This is a long document, but you need
to read all of it carefully before starting the term project. You
are about to invest serious effort creating the capstone project
for this course. Make sure you understand the requirements before
you get started. Also, this document changes a bit each semester,
so be aware that you may have friends who took 112 earlier who
have different ideas about the term project 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!!!
- Description
- Project Options and Requirements
- Grading
- Policies and Rules
- Schedule and Deliverables
Description
Your task is to design and implement a program of your choosing. 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 week of the semester so
you know where you stand and what additional work may be required to
achieve your desired grade.
You have an extended period to finish this assignment, with no other
required assignments during the last week. You are expected to invest
at least 25 total hours into this project, 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.
Project Options and Requirements
-
Project option 1: Sudoku
-
This semester, Sudoku is the guided term project. "Guided" is
used in a loose sense here. By choosing this option, you will
have some general guidance on both what features you should work
on, as well as how to implement them. Additionally, the TAs will
be more prepared to help you with Sudoku than a custom project,
so you may be able to recieve more help on Ed and in office
hours.
-
See this document for more detailed
Sudoku instructions and requirements.
-
Project option 2: Custom Project
If you choose this option, you must have your project idea
approved in email by Friday 7/26 at 11:59pm. If you do not have
approval by this date, you must do the Sudoku project.
-
See this document for more
detailed Custom TP instructions and requirements.
Grading
Your term project will be graded using three general categories. There is
some overlap, but you should pay attention to each of these to ensure
the best grade:
-
Code Organization
-
Your code should be clean, well-organized, and be written with
good, consistent style. Someone who is reasonably proficient in
Python should easily understand your code and how it works.
-
You must make meaningful use of OOP in your term project! This
will make your code more elegant and your life easier by
compartmentalizing your code.
-
User Interface / User Experience
-
Your project should be visually appealing. 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.)
-
Your project must be richly interactive, and the user experience
should be positive and engaging. Your app should be easy for a
new user to use.
-
Your app should feel complete and cohesive.
-
Algorithmic Complexity
-
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.
-
Avoid hard-coding, repetitive conditionals, or exceptionally
inefficient approaches where more efficient alternatives exist.
-
Your app should be reasonably efficient.
Policies and Rules
Note that the main course policies still apply, unless they are overruled by the policies described here.
-
Backups: To avoid a catastrophic loss of work, you must make
frequent backups of your term project files at least once daily.
These should be stored off of your laptop. They can be on an
external hard drive, on Google Drive, in GitHub, or anywhere else
that is convenient for you. We will not grant extensions for lost
work, so be smart and backup your files daily!
-
Required Meetings: All term project meetings are required.
While the following policies might seem harsh, TP meetings are how
TAs grade your code and give you feedback, so missing them is
extremely detrimental to you and also makes our grade normalization
process much more difficult. Thus, we hope the following policies
will help everyone make the best decisions and be the most effective
as possible.
-
If you show up late to a meeting, you lose 5% of your score on
the TP deliverable per minute. If you are 5 or more minutes
late, this counts as a missed meeting. You must schedule a new
time to meet as soon as possible.
-
If you miss a meeting (or fail to set up a required meeting in
the first place), you have one day to make it up. You will still
lose points for missing the meeting, but those will be limited
to that deliverable. 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.
-
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. 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, 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. 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.
-
Online Resources: You may use any materials whatsoever,
including source code, designs, images, text, and sounds, from any
sources you may discover online. However, you must very clearly cite
each such use. 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.
Schedule and Deliverables
You will have 3 deliverables for this term project. TP1 and TP2 combined
will count as one quiz grade. This is not a traditional quiz, but 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 assess your deliverables in a meeting with you, though
they will not assign you a number grade until after consulting with
other TAs after the meeting. Keep in mind that these meetings are your
chance to show off your code! Make sure that your mentor knows about all
the features you implemented and what made them difficult so they can
consider that when grading.
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-C or low-B 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, 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.
Below is the schedule and requirements for each deliverable:
-
Wednesday 7/24 at 11:59pm: TP Option Selection Form due
Fill out the TP Option Selection Form
to let us know if you're doing Sudoku or a custom project! Also
specify on this form if you want to complete a tech demo.
-
Thursday 7/25 - Friday 7/26: Tech Demos
Tech demos will be scheduled on one of these two days. You should be
prepared to complete your tech demo by Wednesday 7/24 at 11:59pm to
ensure you are ready regardless of when in this window you are
assigned to do a tech demo.
-
Friday 7/26 at 11:59pm: Custom TP approval deadline
You must have approval to do a custom TP in writing over email by
this time. If you do not have approval by this time, you must do the
Sudoku project.
-
Sunday 7/28 at 8pm: TP1 Deliverable Due
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 a decent
amount of working code (200-400 lines, depending on complexity).
This code may be prototype code, and so perhaps may not be part of
your final project. It may or may not have any user interface. But
there still should be some code that shows clear progress in some
parts of your project.
Below are the TP1 deliverable requirements. You should submit all
the required files within a single zip file on Autolab, under the
TP1 assignment. If your file is larger than 10MB, submit the core
part of your project to Autolab (at least including all your
Python code), and submit the rest to your mentor via some
standard, reasonably secure file sharing method such as Google
Drive.
-
TP1 Meeting [0 pts] You'll meet with your mentor to check
in and demonstrate what you've accomplished so far. See the
Policies and Rules section for missed meeting deductions.
-
Preliminary Code [40 pts] You should submit code
artifacts showing some work on the project. This does not need
to be a complete 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.
-
Timesheet 1 [5 pts] Keep track of the time
you spent on the project up until TP1, and enter it into the
form.
-
Tuesday 7/30 at 8pm: TP2 Deliverable Due
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 (600-800 lines, depending on complexity).
Below are the TP2 deliverable requirements. You should submit all
the required files within a single zip file on Autolab, under the
TP2 assignment. If your file is larger than 10MB, submit the core
part of your project to Autolab (at least including all your
Python code), and submit the rest to your mentor via some
standard, reasonably secure file sharing method such as Google
Drive.
-
TP2 Meeting [0 pts] You'll meet with your mentor to check
in and demonstrate what you've accomplished so far. See the
Policies and Rules section for missed meeting deductions.
-
Working Demo [50 pts] You should submit code artifacts
showing a working demo of the project. 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 TP3.
-
Timesheet 2 [5 pts] Keep track of the time
you spent on the project from TP1 to TP2, and enter it into the
form.
-
Thursday 8/1 at 10pm: TP3 Deliverable Due
Below are the TP3 deliverable requirements. You should submit all
the required files within a single zip file on Autolab, under the
TP2 assignment. If your file is larger than 10MB, submit the core
part of your project to Autolab (at least including all your
Python code and README file), and submit the rest to your mentor
via some standard, reasonably secure file sharing method such as
Google Drive.
-
Project Codebase [90 pts]
The codebase should include all your Python files and any other
files (images, music files, etc.) required for your project to
run. Your project should run robustly, should be algorithmically
complex with good code organization and style, and should have a
good user experience.
When grading your project code, we also consider effort
(especially around the pass/fail line). The term project
should take up the majority of your 15-112 time in the last
week of the semester (about 25 hours). Spending this time and
showing real effort and progress in mentor meetings will
factor into your score.
-
README [3 pts]
Include a file, readme.txt, which must include the following
components:
-
A short description of the project's name and what it
does.
-
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.
-
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!
-
Timesheet 3 [2 pts] Keep track of the time
you spent on the project from TP2 to TP3, and enter it into the
form.
-
Video Demo [2.5 pts]
Important Note: since a video that 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 on the TP
without a video.
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. Do not include the video
file in your submission, only a link. Also, please
make sure your video is accessible without a password (it
should be public or unlisted if uploaded to YouTube).
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.
-
Live Demo [2.5 pts]
In your TP3 meeting, you will need to provide a live demo to
your mentor and one other TA. 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!
-
Thursday 8/1 to Friday 8/2: 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. 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.
-
Friday 8/2 at 4pm: TP Showcase
Attend the Term Project Showcase, and watch demos of amazing
projects by your fellow students. Note: this event is required,
and as stated in the syllabus, missing it will cause you to get a
0 on your overall semester attendance grade. But the event is a
lot of fun, and we hope you enjoy celebrating all the wonderful
projects you and your classmates made!