Achieving your course grade goal

Written by Julie Zelenski

We hope your primary goal in taking this course is to learn and master the material and strengthen your programming chops, but earning a pleasing grade for your efforts is likely somewhere in the mix as well. Happily, these goals co-exist nicely! We have a sequence of lab exercises and assignments that guide and challenge you to build up your skills and we will reward you for working hard on them. The exams will follow up to let you demonstrate that growing mastery. You will be the best judge of how much a given course component contributes to your learning (and thus how much to emphasize it for its learning benefit), but we want to share the general scheme by which course grades are determined, so you can make informed choices that optimize for great outcomes in both.

Overview

Your overall course grade will be determined by the following percentage breakdown:

15% lab participation
35% homework assignments
12.5% midterm exam #1
12.5% midterm exam #2
25% final exam

Below is more detail on homework/lab breakdown. To receive a passing course grade, you must have passing work on both the coursework and exams. Restated, if you fail the exams, then you will fail the class in spite of any astounding performances on the assignments or vice versa.

You may replace (at most) one of your midterm scores with your score on the final exam. If you need to miss a midterm exam for any reason (illness, emergency, conflict with another activity, etc.), or you simply do not score as well on a midterm as you do on the final, this policy will apply. You are not required to formally notify me of your desire to apply the policy; my spreadsheet that calculates final grades will simply apply the formula most favorable to you. It is my goal that the class averages for the three exams be similar, but this is not guaranteed.

Grades will be assigned no stricter than the usual scale of 90% = A- or better, 80% = B- or better, etc. A more generous curve may be adopted at the instructor’s discretion, depending on exam difficulty or other factors.

Coursework

There will be weekly labs and regular programming assignments. Most of your learning will come from this hands-on work. Reading the text and listening in lecture only go so far, it is only by getting your hands on the keyboard and investing in exploring, observing, developing, and debugging that truly builds up your skills and accelerates your mastery. Your efforts in lab and assignments contribute 50% of your course grade.

You earn 25 points for each lab. During the quarter there will be N labs (8 or 9 depending on quarter schedule) and we expect participation in N-1 of them. You will earn full credit having missed one lab or can earn a nice 25-point bonus for participating in all labs.

The writeup for each assignment will indicate the number of functionality points available (typically 75-150) and how points will be apportioned in grading (re: sanity, comprehensive, robustness, stress, efficiency, and so on). Assignment code review is scored using buckets (--/-/ok/+ which roughly correspond to percentages 50/70/85/100, these style buckets usually contribute ~20% relative to functionality total). You can also earn a few bonus points for making an on-time submission. The details for a particular assignment may be a bit different, so refer to the writeup to be sure.

Your coursework percentage is the sum of lab and assignment scores divided by the total number of available points. Attending all labs or earning on-time points adds to the numerator but not the denominator, making them true bonus points. Mapping percentage to letter grade will use the ordinary scale:

>= 90% A-/A/A+
>= 80% B-/B/B+
>= 70% C-/C/C+
>= 60% D
<  60% Not passing

Exams

You may replace (at most) one of your midterm scores with your score on the final exam. If you need to miss a midterm exam for any reason (illness, emergency, conflict with another activity, etc.), or you simply do not score as well on a midterm as you do on the final, this policy will apply. You are not required to formally notify me of your desire to apply the policy; my spreadsheet that calculates final grades will simply apply the formula most favorable to you. It is my goal that the class averages for the three exams be similar, but this is not guaranteed.

Course grade

Median course grade is generally placed in neighborhood of B/B+ border. Coursework scoring is on absolute scale, no curve applied, and scores are very strong (median homework average trends in mid 90s, which is phenomenal!) Exams typically have lower absolute score. When you aggregate the two together, they produce a course grade median around the targeted B/B+. Extrapolating from raw numbers gives you a reasonable idea of where your course grade is headed. You can run some what-if analysis to try out different scenarios (what if my performance stays same/goes up/goes down?) to see how much of any effect possible changes would have.

For the CR/NC grading option, any course grade of C- or higher earns CR.

To pass the course, both the coursework and exam aggregates must each be passing work. Restated, if the composite of your exams is failing, then you will fail the class in spite of an astounding performance on coursework or vice versa. Passing performance on the coursework is a percentage >= 60% on the aggregate of all assignments/labs. Passing performance for the exams will be set at around -1.75 standard deviations below the class median of the composite score of the two exams.

Good learning and good grades

Labs

Assignments

Exams