Grading is a very difficult process. One has to be careful when awarding credit. Most people would agree that it is desirable to be fair and impartial. Most people would also agree that they have missed the mark on these issues some of the time, or at the very least slacked off in some instances. Grading can also a very boring process for some. Some humans tend to do a poor work if the job is boring. At some universities, there have been instances of two different GTAs awarding scores for the same work that are more than 50% apart. Humans sometimes have bad days. It could be that you recently got a bad grade, broke up with a significant other, a loved one passed away etc. Your mood can affect your grading. Keeping this in mind, consider the following questions:
- How good are humans at grading?
- Can you recall a situation where you didn't grade something correctly?
- Can you recall a situation where you weren't graded correctly by someone else?
- Can you recall a situation where the feedback you got on your work wasn't useful?
- What does it mean to grade a problem?
- Do you have a process when you grade?
- Is this process rigorous or did you just put it together really quickly because you had other "more important" things to get to?
- Is a rigorous grading process even possible? What if it takes too long?
This wiki page attempts to give some answers to the above questions. The aim is not to build a general theory. We only look at examples and ideas to get you to start thinking along these lines. Although, a mathematical theory seems interesting to develop on this matter. It might be that there are some deep facts to discover, if one defines things formally. The topics discussed here seems extremely close to the theory of computation.
Programming is not just about solving problems. It is also about writing code that someone else can read and understand easily. It is about writing code that the author can easily understand after years of not looking at it. A lot of Webwork problems are textbook examples of how bad things can get. You should keep all of this in mind and try your best to write good code. As a starting point you can go through the software development part of the KISS principle. These ideas become more important when you start making problems that deal with a lot of things.
We will slowly build up your skills by going over some problems. Going to a later problem without going over an earlier one might cause you to miss important things. There are exercises provided as well. These are designed to get you to think harder and develop your skills further. To get good at mathematics you have to practice. To get good at making Webwork problems you have to practice as well.
- Even and odd functions: custom answer checkers, formulas, the substitute method and messages.
- Function Composition: linking multiple student answers with ParserMultiAnswer.pl.
- Fundamental Theorem of Calculus: storing answers, the eval method for formulas and eval-or-do blocks.
- The KISS principle: making sentences.
- Fundamental Theorem of Calculus: handling the preview button.
- Integration by substitution: general partial credit checks and problem templates.