I have been TA-ing for Computer Science theory classes for the past 3 quarters, and the work is mostly grading. The assignments are almost all problem sets where students write proofs to show that an algorithm works, how to solve a particular type of problem, or something of that sort. I have mostly avoided needing to read through mathematical derivations, but I do need to read through a lot of logical reasoning.

Each quarter has also been a different class with a different professor with a different system for problem sets. I certainly don’t have the years of experience that they do, but in my limited experience, ease of grading can vary tremendously based on the system. Here is my proposal for the perfect setup.

First, all problems have page length recommendations and maximums (e.g. the solution to problem 1 must be less than a page). There are definitely forces pulling in opposite directions for proofs. For students, it’s best to write as much as possible so that the right answer might appear somewhere. For graders, it’s best for it to be as short as possible to reduce the amount to read. Moreover, many problems are intended to have relatively elegant answers. To work towards this, all problems should have a maximum page limit as well as a recommendation for how complex a problem generally is. This forces students to be concise and construct good proofs.

Second, there are no late days allowed on assignments, but the lowest score will be dropped at the end of the quarter. Dealing with late days is a mess. It’s one more thing to keep track of. There are inevitably problems determining exactly when students submit. And you can’t grade all of the assignments early in one sitting if some are still out there. Hard deadlines are easiest, but there are always tricky circumstances, so it’s best to be flexible. And the hard deadline even benefits students, as it guarantees that graders can return assignments sooner.

Third, all assignments must be written up in LaTeX and submitted electronically. Bad handwriting is bad news. It’s frustrating for graders and hurts a student’s grade if something is indecipherable. Typesetting gets around this problem quite easily as anything short of Wingdings is easy to read. To make it easier for students, a problem set template should be offered, as well as the .tex for the problem set itself, so they can easily copy the necessary symbols and formatting. Typesetting is a good skill for academics to have, and especially in a theory class, it’s the closest that many, often programming-oriented, students are going to get o code.

Fourth, all assignments are submitted electronically via a site that accepts the .pdfs generated by TeX. We’ve done submission via email for the past 2 quarters, and it’s a mess. It’s annoying to deal with the flood, and there’s a surprising amount of ambiguity in pairing up students and their work (especially when splitting grading by the alphabet). To get around this, the script should automatically identify students by their school ID and route the assignments appropriately.

Fifth, some application exists to grade easily. Optimally, it allows the grader to click through assignments and pull up the pdf in turn. Graders can easily flip back and forth between that, the problem description, and the solution. Annotations can be made directly into the pdf, and the grade can be inputted on the same page. Those get compiled into a database/spreadsheet, and problem sets are returned by a click of the button: students are emailed back marked up versions of their assignment with the score also there. Somebody do this: it’ll be awesome.

Sixth, each grader is responsible for grading a different problem, not a subset of problem sets. This ensures consistency in grading and is easier for the grader to not have to switch mindset between problems. I’m somewhat ambivalent on the use of error codes or rubrics: I have one in mind when I grade, but I like to be able to ding more or less points depending on the severity of the mistake made.

I think that’s about it. Given my current workflow for problem sets, I think this has a few small improvements over a pretty good system now. It might seem like a very grader-biased process, but remember: happy graders are nice graders.