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:
make formatis runmakeis run and any errors are loggedmake testis 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 formatwas 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 Award | Rough Guideline |
|---|---|
| 100%: Correct solution | The code is entirely logically correct, based on the question |
| 75%: One or two minor errors | The 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 error | The 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 errors | The code shows some progress towards a solution, but there are multiple significant correctness errors |
| 0%: No solution / totally wrong | The 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.
| Question | Maximum Marks |
|---|---|
| Q0 Motion | 2 |
| Q1 Calculator | 2 |
| Q2 Longest climb | 3 |
| Q3 Third power | 3 |
| Total | 10 |
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:
- 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.
- 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!