Midsemester grades are epistemologically invalid. Yes, you can compute something but it doesn't mean anything. At midsemester, every student's grade ought to be an 'F' since they have not finished the course. Aside from that, any faculty worth their paycheck should be giving student enough feedback that they know how they are doing, what to do to improve, and how to get more help or practice. At Ball State, a rule was passed a few years ago that we have to give "midsemester grades" in all classes. Par for the course, nobody actually defined what "midsemester grades" mean.
At midsemester, I threw my students' grades into a spreadsheet blender and dutifully keyed the results into the terrible Web database interface. Because I use a form of mastery grading—where students can resubmit work until it receives full credit—it is not uncommon for students to have an F or a D at midsemester and end up with a B or an A. Furthermore, the majority weight of a student's grade comes from work in the second half of the semester. I made an apologetic announcement on Canvas about having to file midsemester grades, explaining exactly what I did, that it should contain no surprises, and suggesting how students interpret their status. (It turns out, explaining to someone how to achieve their goals is the actual solution to the problem that the university is trying to solve through midsemester grades. The process is human and personal, not quantitative and automatic. No one should be surprised by this.) A few students expressed concern about their midsemester grades, but not many, which I take as an indication that perhaps a majority read the Canvas announcement. A professor can dream, anyway, since the alternative is despair.
But none of that is my reason for writing today. The previous two paragraphs provide the backdrop my tale. Pardon the metadiscourse.
As I explained in early January, I introduced a new achievement into CS222 this semester. Tool-Maker is earned by "satisfying your obsessions," and more particularly by doing the following.
Write a program to compute a student's grade in CS222 based on the policies described on this course site. You may use any programming language or environment that you like, but you must follow the practices of Clean Code.
I know of one student who is pursuing this achievement, and he has been working on it on and off for a little while, sending me occasional questions to clarify policies described on the course site. Today, he emailed me such a question. He asked whether the tool should compute one's grade as if there are no future assignments or whether it should compute one's grade and counting future work as zero.
Exactly!
He stumbled directly into the midsemester grade problem. He did not mention if his question was based on memories of my Canvas announcement, and so I suspect he simply ran across this as he tried to know whether his tool was correct or not. I told him that either way was fine with me. Practically speaking, I don't care, because the two goals of the assignment are to understand class policies and to get practice with Clean Code. My scholar sense tingles, however: once he has completed the work, I will have to ask him why he chose the path he did. One of them may simply be easier than the other, and I couldn't blame him for taking that one. However, he may make his choice based on perceived usefulness, and which model he finds useful might be a tasty bit of insight.