The first solution is to drop the homework for each student with the lowest numerical grade -- but that's just stupid, because for most students that actually did all the homeworks, that would be the single homework assignment that was graded out of 10. I rejected that without even bothering to do the code.
The next solution seemed to be to drop the homework with the lowest percentage grade -- so, for example, if a student had 23/30 on the single 30-point homework and all their other grades were 16/20 or 8/10 or above, then I dropped the 23/30. But isn't it possible that that algorithm might not maximize the score? Indeed, paradoxes like that are possible, as this Mathtrek article and this paper by Daniel Kane show. They remind me of Simpson's paradox, although I suspect there's no deep connection here.
The eventual solution I settled on was to drop the homework for each student that gave them the highest possible percentage; this wasn't hard to code, since I was dropping a single homework, but I wouldn't want to go to that trouble if I were dropping, say, the lowest two homeworks for each student.
Of course, I should have just made all the homeworks count the same amount. And I was even aware of this particular paradox! (The Mathtrek article, as you can see, is dated June 2006; I don't know if I read it then but I certainly had read it before the start of the current semester.
I also played around with the idea of dropping the lowest 20 points worth of homework, which would mean:
- if the homework with the lowest percentage was a 20-point one, dropping that one;
- if the homework with the lowest percentage was the 30-point one, rescaling it for that student to be out of 10 points;
- if the homework with the lowest percentage was the 10-point one, dropping that one, and reducing the weight of the homework with the second lowest percentage grade by ten points.
(This was inspired by a policy that at least one of my undergrad classes had, where the final counted twice as much as each exam, and the lowest exam was dropped, except if the lowest exam was the final, in which case the final was reduced in weight to have the same weight as a midterm.) But I wasn't sure what properties that has, and technically it is not what I said I would do. Of course the algorithm I choose isn't going to change any grades by much, and dropping the lowest homework is really something to take a bit of pressure off the students, but I wanted to stick to my word.
Furthermore, the method I chose has the nice property that no student can come to me and say "my grade would have been better if you'd chosen a different homework to drop".
Also, it's occurred to me that what we tell our students about grades is a lie. In the particular class I'm TAing, we tell the students that the homework counts 20%, the two midterm exams count 25% each, and the final counts 30%. But this ends up not quite being true, because homework grades are less narrowly spread than exam grades! (The mean overall homework grade was 84%, the standard deviation 12%; the mean grade on each exam was in the low sixties with a standard deviation of 16%.) This has actually generated complaints for me from students in the past, who assumed that we were curving each section of the course separately and were disappointed to learn that we curved the total raw score. (These were students who had relatively better homework grades than exam grades, and thus ended up being hurt by this policy.) I'm a probabilist, though, not a statistician, so I won't elaborate on this.