This page describes the grading procedure for PE0 for complete transparency.

Finding your grades and comments

You can find your PE0 grades and comments in Canvas under Assignments → Practical Exam 0, or through Canvas Grades. The comments are important, they provide question-by-question feedback and links to the autograder results along with your formatted code.

Overall Grading Methodology

To keep grading consistent, a single (graduate student) grader TA with prior C experience is assigned to grade an entire exercise. Our TAs and teaching team have spent considerable time reading submissions, checking the grading, and preparing useful feedback, including additional rounds of review.

The broad principle used:

Students should be graded based on the amount of progress made towards a complete solution (assuming the grader can understand your logic), not how many test cases were failed. For instance, even if a student failed many test cases, but the solution was almost completely correct, they should receive only minor deductions, and vice versa.

How Autograding Is Done

For each exercise within each student’s PE folder:

  1. make format is run
  2. make is run and any errors are logged
  3. make test is run and the list of passed and failing test cases is logged

Cases can fail if the output is wrong, if AddressSanitizer or UBSanitizer is triggered (not in PE0), or if there is a timeout. A timeout can indicate an infinite loop, but it can also occur when otherwise correct code is inefficient; see below.

How Final Grading Is Done

For each exercise, a grader TA assessed correctness and standards, and provided comments:

  • Grade category: one of five classes of how close your solution was to a correct solution. This decided the correctness contribution, before any standards deduction.
  • Comment: if the solution was not completely correct or completely wrong/missing, grader TAs left a comment with some indication of why the grade category was chosen. In other cases, comments are optional.

This was not based only on test cases! The autograder was just an indication, and grader TAs read every line of your code to decide. See below for what the grade categories represent.

Things Partially Considered During Grading

  • Whether your code compiles: this is not a straight 0. Code that does not compile has at least one significant error, even if it is otherwise correct. A compilation failure often results in a grade at least one grade band lower than the code would otherwise receive. Grade bands refer to the correctness categories below. The grader still considers the progress made towards a solution and the errors present. Code that exhibits undefined behaviour or has an infinite loop also has at least one significant error.
  • Test cases: you can pass all test cases and not get a “correct solution”, and vice versa.

Things Not Considered During Grading

We just want you to solve the problem given!

  • Code formatting: make format was automatically run on all of your code, and graders were instructed to avoid any consideration of how your code looks.
  • Code style: we’re not as strict as Volumes. If you code is especially difficult to read, you may be penalized, but this is rare.
  • Efficiency: we did not judge how efficient your code is. A timeout alone is not penalized if the code is otherwise correct; an infinite loop is a correctness issue.

Grade Categories

These are rough guidelines for the grader’s assessment of your code.

Grade Category and AwardRough Guideline
100%: Correct solutionThe code is entirely logically correct, based on the question
75%: One or two minor errorsThe grader TA can almost immediately see the error you made. It’s something that fails a small edge case, is off by one, or does not fail a major learning point of the question
50%: Approximately one significant errorThe code likely fails multiple test cases due to one significant error or oversight; it cannot be considered a minor error in the grader TA’s view
25%: Multiple major errorsThe code shows some progress towards a solution, but there are multiple significant correctness errors
0%: No solution / totally wrongThe question is unattempted, or the code cannot be considered a coherent attempt to solve it. This includes a totally wrong solution, even if code has been written

Standards

Correctness and standards are assessed separately. For PE0, graders checked the C Standards guidelines on appropriate types (G3), booleans (G5), global variables (G6), and goto (G7). They also considered clear code intent (G2), conservatively, where otherwise substantially correct code was unusually difficult to understand.

Please refer to C Standards for Exercise Volumes. General suggestions in a standards comment do not automatically mean that marks were deducted. Any applied standards deduction is shown explicitly in your score breakdown.

A standards deduction, where applied, is 0.25, 0.5, or 1 mark for the question. These are absolute marks out of the PE0 total of 10.

Final Score

For each exercise, we look at the grade category, multiply the corresponding percentage by the maximum score for that exercise, subtract any standards deduction, and then sum the final contributions across all exercises.

PE0 is out of 10 marks and contributes 10% of your course grade.

QuestionMaximum Marks
Q0 Motion2
Q1 Calculator2
Q2 Longest climb3
Q3 Third power3
Total10

A question’s final contribution cannot fall below 0.

General Comments

Even if your code is correct, grader TAs may leave comments on how to make it better, outside of just the logical flow. Comments about efficiency have no impact on your grade.

The student-facing comments may not capture the entirety of the grader TA’s thought process, just the most significant part.

Your combined feedback gives the following for each question:

  • The grade category and correctness contribution
  • Any standards deduction and the final contribution
  • The grader’s correctness and standards comments
  • Links to your code and the recorded autograder report

PE0 Instructions and Reference Solutions

You can find the PE0 instructions PDF and our reference solutions in the PE0 solutions repository. Our solutions are for reference only. Other correct approaches are possible, and our solutions may not be the best or most efficient ones.

Appeals Procedure

You may submit an appeal to us if you fit into one of two categories:

  1. You had a technical issue that we are not aware of, and you can prove that to us. For example, we assigned you the wrong grades (your name is wrong, or there is a wrong mapping to GitHub), or our grade computation has an error.
  2. Your grade category, standards deduction, or feedback is incorrect for a clear reason based on this page. Remember that the grading is based on the analysis that our grader TA, an experienced C programmer, has done of your code. What matters is that it accurately identifies the issue with the code, if any, and is consistent across all students for that exercise. We are unlikely to overturn decisions unless something is inaccurate or inconsistent. You should have a very good reason to claim that your grade does not fit the grade category given.

If you appeal, for each exercise you’re appealing, please give us a clear rationale, referring to the relevant part of this page and your code or feedback. Passing more test cases than another solution does not by itself show that a category is incorrect.

Please note: asking us for a re-grade will cause Eldon and Sriram to recheck your code in detail, and we have made a pass through the grades before release. If the grader TA was incorrect, you may get more marks. But likewise, if the grader was lenient, we may have to deduct marks for that exercise, or perhaps no change will be made. An increase, a decrease, or no change are all possible outcomes.

Do not appeal just because you think “worst case, my marks remain the same”. The marks may be decreased on appeal as mentioned above, but also, every appeal generates a significant amount of work for the teaching team. Do not do this frivolously. We urge you to make sure that your appeal is well-founded.

Submit your appeal using the PE0 appeals form by 11th October (Sunday) 23:59

We will miss your appeal if it’s sent via email. Please use the form!