Grading and Feedback in CS50


Correctness, design, and style are the three axes along which CS50 at Harvard assesses student work. Correctness and style can be autograded with check50 and style50, but design is where you as a teacher critique code and offer your qualitative assessment. At Harvard, CS50 grades design out of 5 points.

What is Design?

Design is about how a student has approached the problem: to what extent their solution is efficient, creative, and shows mastery of course concepts. For more on what to look for in design, see both the base grading guidelines and problem set-specific guidelines below.

Guidelines on Awarding Points

Design points are not subtractive—that is, a baseline grade is not a 5 and earning a 3 does not mean that a student has “lost two points” on an assignment or “earned a 60%” (two common interpretations we hear from students). Rather, points are used to characterize the extent to which a student has met, exceeded, or fallen short of the course’s expectations.

The course expects that most students on average will be earning a score of 3 or 4 on the Design axis, with perhaps a 2 serving as the low end. Reserve awarding a 5 only to those submissions that are exceptional, for which you can find absolutely no room for improvement. If you can propose even one modification that would improve efficiency, it’s not a 5 and should not be scored as such.

3’s and 4’s should be awarded to work that demonstrates a good to great mastery of the given week’s concepts and problem set. A student’s benchmark for success is considered a 3.

1’s and 2’s should be awarded to work that demonstrates a poor to fair understanding of the given week’s concepts and problem set. Awarding a 1 or a 2 indicates that there are substantial improvements to be made to the design of a student’s solution.

Grading FAQs

How should I grade incomplete work?

If a student has submitted an incomplete solution, it is best to approach grading design in response to the question, “Given what the student has submitted, what evidence do I have that they have understood a good design approach to the problem?”. It’s best to avoid a scenario where a student is double-penalized for incompleteness on both correctness and design, but it’s also best not to extrapolate from a single function that a student has understood all of the week’s concepts.

Base Grading Guidelines

For information on grading guidelines that apply to all problems, see the base grading guidelines.

Problem Set-Specific Grading Guidelines

The below pages include problem-specific guidelines, as well as links to staff solutions on Vault50.

Feedback Helpers

If you’re looking for streamlined ways to provide feedback on student work, you might find the below “Auto-Commenters” useful. These spreadsheets will generate narrative comments for each student based on certain criteria you enter in as you check each student’s solution. These were created by Douglas Kiang, computer science teacher at Menlo School, California, to support consistent feedback for students.