Project2
Overview
Deadlines:
Project2 pre-deadline (see below) |
Wed 17-Apr at 8pm ET |
Project2 deadline |
Fri 26-Apr at 8pm ET |
There is no late deadline.
We will not review or grade anything not submitted by the deadlines above. |
n/a |
Notes:
- Be sure to read this entire write-up before starting!
- We may add or clarify some details here, in which case we will announce
them via Ed.
- The project2 deadline is on Friday rather than Saturday.
Specifically, it is on Friday 26-Apr at 8pm.
This deadline is to leave you more time to study for your finals,
and to give our TAs enough time to rapidly grade your projects
so you have your project2 grade in time to help you
decide whether or not to take the final exam.
You still have a full week, at a minimum, to complete project2.
- This project is entirely solo. All other work must be done
by you and you alone.
- Except where explicitly noted below,
the only websites you may refer to are CS Academy and Ed.
- The one exception is that you are free to look at
apps and videos of apps to help give you some ideas
about what you may wish to create. Even here,
you must not look at any code for those apps.
- The only people you may work with are current 112
faculty and staff.
- In particular, you may not use any AI tools in any way.
- You also may not look at or discuss any code that is not your own
(except for code on CS Academy). The internet is full of code for apps
similar to those assigned here, and others you may choose
to create. Do not search for or look at that code, or any tutorials, articles, videos, questions, answers, posts outside of Ed, etc. It won't help anyhow, but in any case, it is not allowed.
- Any violation of this is an Academic Integrity Violation.
- Except where explicitly noted below,
all your code editing for this project must be done exclusively
in CS Academy, in the specific location listed below.
Overview:
Project2 has 3 options with different rules. You must choose from one
of these 3 options by the project2 pre-deadline (Wed 17-Apr at 8pm ET).
Everyone must fill out the
pre-deadline form (which is now available),
but if for some reason you do not fill out the form, then you
are automatically assigned to Option 1. Please note that it is
your responsibility to ensure that your form response has been properly received on time. If you have not received a confirmation email from Google soon after filling out a form, we do not have your response.
- Option 1: Standard Projects in CS Academy:
We expect most of you to choose this option. We will post several
sample projects (see below), and you would choose to reproduce one of these
sample projects, writing your code inside CS Academy.
Note that you can simply elect this option at the pre-deadline,
you do not need to qualify for it.
Note: As with project1, the standard projects that we provide for you are not meant to be matched exactly. If you choose Option 1, then you should come close to them, but there is no pixel-perfect autograder. Thus, you are free to vary a bit, so you do not have to exactly match colors or sizes or positions of graphical elements.
- Option 2: Custom Projects in CS Academy
While most of you are expected to do standard projects,
some of you may prefer to do your own custom project, but still
staying inside CS Academy. We expect the general size and quality
of this project to be at least the same, or more than, the standard
projects in Option 1.
To qualify for this option,
you need to submit both a short project description and a working demo
of your project (that is, working code that we can run)
by the pre-deadline. The demo need not be complete,
but it must include some working UI with the hardest parts
of the project mostly working, and
it must clearly demonstrate that you are far enough along
that you are likely to complete the project on time.
The project description
needs to be clear enough for us to understand what you plan
to create. It may help if you include
a link to a working version of a similar app, or perhaps with
a link to a video of such an app running, along with a short
description of how your version might differ from that one.
We will review
your proposal and approve or reject it soon after you
submit your proposal but no later than the day
after midterm2, leaving you at least a full week to work on the
project.
If you submit your proposal sooner, we can review it
sooner, leaving you more time to work on it. If your proposal
is submitted well before the pre-deadline and it
is not approved, then you can opt to work more on it
and make a second proposal prior
to the pre-deadline, but the max is two proposal submissions
in any case.
If this proposal
is not approved by the pre-deadline,
then you must elect Option 1 and do a standard project.
Click here for the pre-deadline form.
If you are unsure whether your project2 idea would fit within these guidelines, please ask us. We are here to help.
- Option 3: Custom Projects outside of CS Academy
This option is just for very few of you, for those whose
project ideas require using modules that are not available
in CS Academy. We will not approve this option unless
(1) you scored 80 or higher on project1,
and (2) you scored 80 or higher on midterm1,
and (3) you have a working demo by the pre-deadline.
For this option, you must store your project
in a private git repository that you share with us, and
you must save (push) your code regularly to that project,
so we can easily monitor your progress. If you do not know
how to do this, you can go to OH and a TA will assist.
For this option, you still must use CMU Graphics (the desktop version),
and you must adhere to our MVC approach.
Note: this paragraph was replaced on Sat 30-Mar:
To even start exploring this
option, you need to meet with a course faculty member (that is,
Mike or David, preferably at
our faculty OH) to discuss your idea, and then you must
obtain pre-approval in writing (in email) from
the course faculty. If you have already started researching
this option, then do these steps to obtain your pre-approval
by the course faculty today! That approval is only for you to start
exploring the project.
This has been replaced with this new policy, effective immediately:
To even start exploring this
option, you need to meet with a course faculty member (that is,
Mike or David, preferably at
our faculty OH) to discuss your idea, and then you must
fill out the
Project2 Option3 Pre-Approval Request Form
by Monday 1-Apr.
Notes:
- Anyone who is considering doing option3 must fill out the form by Mon 1-Apr.
- You have to fill out the form by then even if you
already received email confirmation from the now-defunct policy above.
- If you do not fill out the form by Mon 1-Apr, you cannot select option3.
- Filling out the form merely seeks "pre-approval", as noted in this writeup.
- We will respond on Tue 2-Apr with emails to everyone on the form either granting or denying pre-approval.
- Note that the form requires that you provide a link to your private github repository (properly shared with us), as explained in the project2 writeup. So be sure to set that up prior to filling out the form. And be sure to follow the project2 instructions, and push your code updates regularly to that github repository.
After pre-approval, you will still need to fully qualify.
To fully qualify for this option, you need to follow the steps
for Option 2, submitting both a short project description (as explained
above in Option 2) and a working demo
of your project by the pre-deadline. Here, your demo must also
demonstrate that you can
effectively use the modules you plan to include in your final project,
in addition to showing that you are
far enough along that you are likely to
complete the project on time.
The final approval process for Option 3
is the same as Option 2: we will review
your proposal and your demo and approve or reject it
soon after you
submit your proposal but no later than the day
after midterm2, leaving you at least a full week to complete the
project. If you submit your proposal and demo sooner, we can review it
sooner, leaving you more time to work on it. If this proposal
is not approved, then you must elect Option 1 and do a standard
project.
Note that for Option 3 only, you are allowed to reference websites
as required to learn about the modules you may elect to use. However,
you must carefully cite all the websites and materials you use
(in a triple-quoted string at the top of your main project Python file),
and you must also carefully cite within your code any code that is
not entirely originally your own. Besides this special exception,
all solo rules still apply.
Click here for the pre-deadline form.
Expected Effort
Everyone is expected to invest 10-12 hours into project2. This is well below
project1's requirements, and we will grade accordingly. Thus, we strongly
recommend that you choose a project that can fit in these guidelines.
While we may provide some few bonus points for especially strong projects,
these will be modest and only in a few exceptional cases. Thus, we
strongly recommend that you stay near the required 10-12 hours of effort
on this project.
New note: To be very explicit, note that your project must contain a substantial amount of new code that you have created specifically for this project. You may re-use some code (for example, see the Word Search standard project below, which still contains lots of new code in order to be a more complete app) but your project should be something that is not very similar to anything you have created before. For instance, we will not approve a lightly-modified version of Tetris or Snake. If you are unsure, submit your proposal early.
Points:
The project is worth 100 points, as such:
- User Experience (80 points)
Your project will be graded chiefly on the quality of the
user experience. You should resist the urge to add a bunch
of features. Instead, focus on a small set of well-chosen,
well-designed features that produce a cogent, engaging app.
Also, while you can make a game, we strongly encourage you
to consider non-games, particularly as you have already made
quite a few games this semester. However, we will not require
a non-game.
- OOP (10 points)
While you are generally free to use any 15-112 concepts in
your project, you are required to use OOP (which we will
cover in week11) in some meaningful
way. You do not have to use inheritance, but you do have to
include at least one original class with at least two attributes
that you define properly and use well. For full points, you
also have to include at least one well-chosen, well-designed,
well-used method in your class.
- Style (10 points)
Your project has to use good style, as explained in the course
notes.
- Bonus (up to 5 points)
For especially strong projects, we may award a few bonus projects.
However, we strongly urge you to stay within the 10-12 hour
time commitment. We do not want you working heroically in
the hopes of earning a few small bonus points.
Notes:
- Since we will be grading a variety of projects, this
requires some subjectivity in our grading. While this is true, be
assured that we will take measures to ensure that we are grading
fairly and consistently.
- We expect the median grade for project2 to be around 90, which matches
the median grade for project1.
Submission
For option1 and option2,
do all your editing in this app in the provided CS Academy location:
For option1 and option2,
when you are done, and prior to the project2 deadline (Fri 26-Apr at 8pm ET),
you must hit the submit button for this file.
Once you hit submit, you will no longer be able to edit your code.
(If you must, you may ask to unsubmit on Ed, but there may be a delay,
we cannot extend the deadline for this, and we will only do this once.)
This is not a homework problem, and thus the grace day period cannot be used.
We will not grade anything not submitted by the deadline.
For option3, when you are done, and prior to the project2 deadline (Fri 26-Apr at 8pm ET), you must make one last push of your project code to your git repository,
and then you must fill out this option3 project submission form:
Important:
To be sure we properly grade your work,
you should include a triple-quoted string at the top of your file
that briefly describes the key features that you want us to grade.
If it is not obvious, you also need to include brief
instructions for graders explaining how to make those
features visible. This way we won't miss it when grading.
Grading Shortcuts:
Also, to help us grade your project, we ask that you provide
"grading shortcuts", or specific keys graders can press to put
the app immediately into a state that showcases some of the
best features you implemented. Of course, you should provide
a list of those grading shortcuts in your triple-quoted string,
and perhaps also directly in the project itself (say, in a grading
shortcuts screen).
Project2 Grading Video:
Everyone must also create a short video (no more than 2 minutes, preferably 1 minute) where you screenshare your running project with your voice-over where you showcase the most important features that you want graders to be aware of when grading. If you did option1, this would at least showcase your bonus, if any. For option2 and option3, this would showcase the most important parts of the project that graders should be aware of. Graders will watch the video (closely) just before grading your project, so plan accordingly. Note: please do not bother with polishing the video. Don't worry about production quality so long as we can see your running project and clearly hear and understand your comments. Pro tip: the easiest way to do this is to use zoom, share your screen, and record the meeting. Here is a form to submit a link to your video, which should also be included in a triple-quoted string at the top of your main Python file:
Note: The video must be properly submitted through the form by 8pm on Friday 26-Apr. Also, you must be sure that the video is viewable by anyone who has the link, and you must not modify the video after the deadline. If we cannot access your video, we cannot grade your project, so we recommend testing the link in an incognito window or with a friend. It is your responsibility to ensure that your video and form response has been properly received on time. If you have not received a confirmation email from Google soon after filling out a form, we do not have your response. We cannot accept any other proof of form submission aside from that email receipt.
Standard Projects
Click these links for interactive versions of the standard projects, along with the grade range you can expect to receive if you implement the same features at the same level of quality as shown below.
Important Notes:
- These grade ranges assume that you have written your code with good style and sufficient OOP as described above, and have earned full points for those categories. If you implement the same features but your code does not meet our standards for good style and sufficient OOP, your grade may be lower than these estimates.
- Be sure to watch the video for your project carefully so that you understand what features are most important! This is especially true for the A-level projects, which require more code sophistication than you might initially expect.