Grading policy


Your grade for this course is computed through an arcane process of fiddling around with weights and algorithms until I get results that I (not necessarily you) feel are fair, consistent, and reasonably generous.

Exams Your exam grades are normalized to a z-score. The z-score is:

(your_grade - average_grade)/(standard_deviation)

This compensates for different mean scores and standard deviations on the exams. The mean is the class average and the standard deviation measures how wide the grade distribution spreads out. A z-score of 0 means you’re at the exact class average. A z-score of 1 means you are one standard deviation above the class average; that’s about the 84% percentile. A z-score of -1 means you are one standard deviation below the class average; that’s about the 16th percentile. See here to read more about standard scoring if you’re curious.

For example, suppose a student gets a grade of 65 on an exam where the mean grade is 70 and the standard deviation is 18.5. Her z-score is (65–70)/18.5 = -0.27. On a 4-point GPA scale with the mean set to 3.3, the score of 65 corresponds to a 3.3–0.27 = 3.1, which is a B.

From the z-score, a continuous-scale GPA is computed. All exams carry the same weight and the lowest exam grade (based on the z-score) is dropped. All exams carry the same weight and the lowest exam grade (based on the z-score) is dropped.

These are the mean grades and standard deviations for the exams:

Exam 1 Exam 2 Exam 3
Average 70.9 65.2 63.1
Std. dev. 18.4 18.1 16.5

To get an idea of how your grade measures up, compute your z-score and add 3.2 to it to get a GPA for that exam grade (disclaimer: I may change this factor). Using the above example, the grade of 58 for exam 2 corresponds to a GPA of approximately 3.6.


Homework assignments are not normalized to mean grades but stand on their own. They are normalized only to the maximum number of points allotted for that assignment. For example, a grade of 8 where the maximum score is 10 is identical to a grade of 80 where the maximum score is 100. Programming assignments count more than written assignments.

Exams constitute the dominant part of your course grade. However, missing projects, missing multiple assignments, or exceptionally poor performance on assignments will hurt your final grade. For example, if your grade is a low B (e.g., 2.8, 3.1), poor performance on assignments may bring it down to a C+. Conversely, good performance on assignments may help boost your grade. For example, if your exam grade was around 2.35 (a low C+), good performance on assignments and quizzes may boost it to a 3.0 (B).

Final grade calculation

I expect you to complete all assigned homework assignments and projects. Grading on assignments and projects will be generous. For projects, you will get a lot of credit for getting something working rather than nothing at all or not even making an effort. Assignments, projects, and quizzes will not count for a large percentage of your course grade; exams will dominate your grade. However, not doing your assignments will hurt. I may alter the values as I play with the grades toward the end of the semester to find values that I feel are fair but expect a 0.1 GPA penalty for every missed assignment and a 0.25 GPA penalty for every missed programming assignment.

A few factors may override your final grade:

If you are caught cheating in any way, I will report you to the Office of Student Conduct and await their verdict on your grade. This may lead to a delay in your grade and failure in the course. Your actions will also be reported to the department and to your dean.
Not doing programming assignments:
If you do not turn in any programming assignments or turn in truly pathetic submissions that show little to no effort and do not come close to working in any reasonable way you will not get a grade exceeding a D.
Missing assignments:
Missing assignments or exceptionally poor performance on assignments will have a negative effect on your grade.
Last modified December 12, 2022.
recycled pixels