The expectations and grading for the Final Project differ from the grading expectations for labs, so please make sure to read the details below and ask questions!
Grading for the final project will be based loosely on the concept of specifications grading: your grade is dependent not on a specific allocation of points, but rather on whether your final submission meets a set of requirements.
The final project has an effect on your final course grade as follows. If your grade is calculated to an A with all course materials other than the final project and you receive a grade of --
on the final project, your course grade will be a B. If your grade is currently a C and you receive a grade of +
, your final grade will be a C+, etc.
We expect that most students will aim for, and receive, a *
(“Keep Letter Grade”) on the final project. Notably, you cannot receive a grade higher than an A+ in the class (i.e. if you receive a ++
on the Final Project and have a working course grade of an A, you will receive an A+, but no higher grade).
We will use the following chart to allocate your grade according to the requirements below:
Grade | Effect | Requirements |
---|---|---|
++ | Increase a Letter Grade | Bundles 1, 2, 3, 4, 5 |
+ | Increase Half a Letter Grade | Bundles 1, 2, 3, 4 |
* | Keep Letter Grade | Bundles 1, 2, 3 |
- | Decrease Half a Letter Grade | Bundles 1, 2 |
- - | Decrease a Letter Grade | Bundle 1 |
- - - | Decrease a Letter Grade and a Half | No Bundles / No Submission |
According to the grading scheme above, your final project should meet a set of requirements, which we call “bundles”. The description of each bundle is below. You must complete all the required bullets to receive credit for the given bundle - bundles do build on each other, so if you meet the requirements for Bundle 3, you most likely will meet the requirements for Bundles 1 and 2, but it is your responsibility to check whether your submission meets the expectations of each bundle.
This bundle consistutes the base requirements for the project:
The requirements of this bundle are:
if
/elif
/else
)math
)main()
function and if __name__ == "__main__"
The requirements of this bundle are:
self
)return
statementmain()
for
and/or while
loops[]
) and then add/remove at least one element from it in your codeThe requirements of this bundle are:
main()
plus three others)elif
and else
are properly used instead of a “waterfall” of separate if
statements)The requirements of this bundle are:
try
/except
where appropriateThe bundles above reference important documentation expectations. These elements are crucial to the process of completing the final project and communicating your goals to your instructor and course staff.
The project proposal should be written in PROPOSAL.md
. It should describe (1) the title of your project, (2) a 3-5 sentence summary of the project, and (3) your intermediate goal(s) for the following week. Your instructor will review your proposal and provide feedback on whether you are ready to get started or if a brief follow-up meeting is needed to clarify or refine any points.
To help you stay on schedule, you will write a brief Progress Report in the file named PROGRESS.md
. This file will ask you to reflect on your effort to complete the intermediate goal(s) outlined in your PROPOSAL.md
and your effort towards satisfying bundle criteria. Credit will be awarded based on completion. Similar to the Proposal stage, you will receive some timely feedback from your instructor. Consequently, this exercise is most beneficial if you’ve made your best effort to meet your goals.
Writing good documentation is a critical part of being a conscientious coder. As part of your project, you will create a DOCS.md
file that outlines the operation and use of your program. It should provide a clear description of how to run your code, any inputs that are required, and the expected output. You should make every effort to rid your code of bugs, but sometimes there are bugs that refuse to be handled. If this happens, you should note the issue in your DOCS.md
and describe the workaround you are using to keep your program operating.
Please note that none of the above requirements for the Final Project are specific to the type of interactive system you are building. The choice of interactive system is yours to make and to be excited about. However, as the summative assignment in this class, we are focused primarily on the programming, design, and problem solving skills you learn during the final project, not necessarily on whether your system achieves your stated human goals. For instance, a Backgammon game that violates most of the game rules of Backgammon in favor of good design can still recieve a +
or ++
grade.
Due dates for each of the components above will be listed in the associated files in your GitHub repository.
REMINDER: Unless you have been approved for an educational or emergency incomplete, your professor cannot accept work after the college’s offical final exam deadline. Final exam deadlines vary depending on what section of CSCI 150 you are enrolled in and can be found on your CSCI 150 schedule/syllabus and Oberlin registrar website.