If you have any questions or concerns, please ask in lecture, during office hours, or on Piazza.
Graded work

Homeworks are graded by the entire course staff, directly within Gradescope. To keep grading consistent, each numbered problem is graded by two undergraduate CAs, under the supervision of a graduate TAs, using a detailed rubric developed within Gradescope. Under normal circumstances, all homework should be graded within 10 calendar days of submission.

Exams are graded by Jeff and the graduate TAs, also within Gradescope. Under normal circumstances, exams should be graded within two weeks. You can retrieve your original ungraded paper (including your cheat sheet) in office hours a few days after the exam, once we've had a change to scan everything.

Homework and exam solutions are posted at most a day after the corresponding submission deadline. Homework and exam solutions include the rubrics used by the graders.

Please doublecheck the posted solutions for correctness. If any posted solution contains a serious error, all students will receive a perfect score for that problem as extra credit. Yes, really. I did this twice the last time I taught 374.
Regrade requests

Submit your regrade requests directly within Gradescope. If you have questions or concerns about any grade, we strongly encourage you talk with the course staff before submitting a regrade request. However, no grades will be changed in any student's presence; you must submit an official request.

Regrade requests can be submitted up to two weeks after the graded work is returned. Regrade requests for the final exam can be submitted up to three weeks after the exam scores are released. Late regrade requests will be denied.

All regrade requests must include a brief written justification for the request. (Fill in the appropriate textbox on Gradescope.) Good justifications include the following:
 My answer agrees with the posted solution, but I still lost points.
 I lost 4 points for an incorrect time analysis, but the rubric says that's only worth 2 points.
 You took off points for missing the base case, but it's right here.
 My answer is correct, even though it does not match the posted solution.
 There is no explanation for my grade.
 The official solution is incorrect; here's a counterexample.
 I got a perfect score, but my solution has an error.
Regrade requests with poor or missing justifications will be denied.
 We can only grade what you actually submitted. You cannot get a higher grade by explaining what you meant, either in person or in writing; your original submission must stand on its own.

If you submit a regrade request, we will regrade the submitted problem from scratch. The TAs will regrade homework problems; Jeff will regrade exam problems. Your grade may go down.

If you submit a regrade request correctly reporting that a problem was graded too leniently—that is, your score is higher than the published rubric indicates—you will be awarded extra credit and keep your original grade for that problem.

We will consider regrade requests for the final exam only if a successful regrade would change the student's overall course grade.

We will readily admit, apologize for, and correct our mistakes if you have been graded unfairly. However, please remember that "unfairly" means your grade is inconsistent with the published grading rubric, or that you were graded more harshly than other students, not just that you think the rubric itself is too harsh. Please also keep in mind that each homework point is worth approximately 0.1% of your final course grade.
Final course grades
We will determine final course grades as follows.
(What do you expect from an algorithms course?)
 Compute raw totals from homework and exam scores, excluding extra credit.
HwCount = min(24, max(actual number of homework submissions, 16))
HwAve = (sum of HWcount highest homework scores) / (HWcount * 10)
HwWeight = HWcount * 0.0125
ExAve = (sum of exam scores) / (max possible sum of exam scores)
ExWeight = 1.0  (HWcount * 0.0125)
RawTotal = HwAve * HwWeight + ExAve * ExWeight


20% ≤ Homework ≤ 30%:
Each submitted homework problem is worth 1.25% of your raw total, up to a maximum of 30%.

We expect to assign and grade about 30 homework problems during the semester.

We will count a maximum of 24 problems, dropping the lowest scores if you submit more than 24 problems.

Any student who submits less than 16 homework problems will be given an automatic F.

This flexible homework policy implies that submitting only “I don't know” will almost certainly hurt your course grade more than submitting nothing at all.

70% ≤ Exams ≤ 80%:
There will be two midterm exams, each worth ≥20% of your raw total, and a cumulative final exam worth ≥30% of your raw total. If you submit less than 24 homework problems, your exams are given correspondingly higher weight. We do not plan to drop any exam problems.

Exceptions:
 Forgiven homework will be treated as if it did not exist; submitted homeworks will have more weight in the overall grade computation. In exceptional cases, we may compute course grades based entirely on exams.
 Forgiven midterms will be treated as if they did not exist; the other exams will have more weight in the overall grade computation.
 Anyone who misses both the final exam and the conflict final exam will be given an ABS (“absent from final”), which is equivalent to an F, unless they get an Incomplete from their college.
 We will not drop zero grades that result from cheating offenses.
 Compute adjusted totals, which include extra credit points. Extra credit points are not necessarily worth the same as regular points.
 Remove outliers and exceptional cases.
 Anyone with an adjusted total over 90%. These students automatically get an A+. This rule typically applies to the top 2–3% of the class. I reserve the right to lower the 95% cutoff.
 We reserve the right to give any student meeting at least one of the following conditions an automatic F:
 Adjusted total below 33%
 Adjusted exam average below 25%
 Submitted less than half of the homework
 Otherwise does not appear to making a goodfaith effort
This rule typically applies to the bottom 23% of the class. These are not the only ways to fail!
 Anyone who misses an exam or has a significant number of forgiven homework.
 Anyone who answers more than five exam questions with "I don't know".
 Determine lettergrade cutoffs from the raw totals. Outliers are excluded from the cutoff computation to avoid unfairly skewing the curve. The mean is a borderline B–/C+, and each standard deviation is worth one full letter grade. For example, the B+/B cutoff is 2/3 standard deviations above the mean, and the D/D– cutoff is 5/3 standard deviations below the mean.
 Compute final letter grades (for nonoutliers) from adjusted totals.
 In particular, grades for graduate students are determined by comparing their adjusted total to the undergraduate curve.
 Adjust grades upwards at the instructor's whim.
Here are the grade distributions for all of Jeff's previous offerings of CS 374. Like this semester, the mean was at the C+/B– boundary, and each standard deviation was a full letter grade. Spring 2014 and Fall 2014 were pilot offerings, with significantly smaller enrollments, unsettled curricula, and no flexible homework percentage. Fall 2016 is the only semester Jeff has taught the course "at scale" in its current form.
Semester 
Mean ± stdev 
Min pass 
#As 
#Bs 
#Cs 
#Ds 
#Fs 
Spring 2014  59% ± 11%  38%
 8  11  8  8  1

Fall 2014  62% ± 12%  38%
 16  22  22  12  0

Fall 2016  64% ± 12%  39%
 87  113  124  60  14

Here are the grade distributions for all Jeff's previous offerings of CS 473. Here, only undergraduate grades are used to define the lettergrade cutoff; the mean is the center of the B range, and each standard deviation is worth 3/4 of a letter grade. Spring 2015 was a pilot offering, which did not use the current flexible homework percentage.
Semester 
Mean ± stdev 
Min pass 

#As 
#Bs 
#Cs 
#Ds 
#Fs 
Spring 2015*  65% ± 12%  42%
 ugrads:  7  12  5  0  0

 
 grads:  13  6  0  0  0

Spring 2016  74% ± 11%  42%
 ugrads:  27  29  21  3  0

 
 grads:  11  11  0  0  0

Spring 2017  73% ± 13%  41%
 ugrads:  28  30  22  3  4

 
 grads:  6  7  3  0  0

Typical  72% ± 12%  42%
 ugrads:  32%  37%  25%  3%  2%

 
 grads:  52%  42%  5%  0%  0%

For comparison, here are similar statistics for the last five times Jeff taught the old version of CS 473. (See below for a possible explanation for the significant jump in 2010.) Here the mean was at the C+/B– boundary, and each standard deviation was a full letter grade. Almost every student in these classes was an undergraduate.
Semester 
Mean ± stdev 
Min pass 
#As 
#Bs 
#Cs 
#Ds 
#Fs 
Fall 2006  65% ± 11%  40%
 25  26  23  13  5

Spring 2009  66% ± 13%  43%
 21  25  26  14  2

Spring 2010  72% ± 12%  47%
 24  34  35  16  3

Fall 2012  71% ± 13%  44%
 36  51  42  33  2

Fall 2013  73% ± 11%  50%
 49  58  55  19  2

Typical  72% ± 12%  47%
 24%  30%  28%  15%  3%

Why I stopped dropping exam scores
I used to drop the lowest problem from each exam, but this policy had the counterintuitive effect of lowering students' performance, for behavioral rather than statistical reasons. Many students would just ignore one problem on each exam, but they often ignored the wrong problem.
In 2010, I switched to a policy of dropping the lowest three three exam problems across the entire semester. With this new policy, the strategy of ignoring one problem on each exam virtually disappeared; surprisingly, this lead to a significant improvement in overall averages! See the statistics above.
However, dropping the lowest exam scores actually lowers more grades than it raises, because of more subtle statistical effects. Dropping scores raises everyone's average (as a percentage of the maximum possible score), which means it also raises the mean. If you have mostly high scores with a few low outliers, dropping the low outliers raises your average. But if all scores to be about the same, dropping the lowest scores actually lowers your average relative to the rest of the class.
So now I just keep it simple. Every exam grade counts.
I drop homework scores for a different reason — sometimes students get sick or overwhelmed, or they need to travel, but CS 374 is too big and complicated to reliably deal with extensions. Homework scores are typically high enough and their contribution to the final course grade is low enough to avoid the counterintuitive statistical effects. Or so I tell myself. (For example, 75% of the students in Spring 2017 CS 473 had a homework average of 89% or better, and 90% had a homework average of 75% or better.) Hopefully this flexibility helps students concentrate on using the homework for its intended purpose — practice and feedback with the course material — and not worry so much about homework grades.