If your program meets the project specifications and follows the coding standard, it's unlikely that you will lose more than a couple points for random mistakes. Nonetheless, I know I appreciate hearing this kind of stuff up front, so I will try to be explicit as possible about how your projects will be scored.
Coding standard will be graded by deduction. For each criteria of the coding standard that the program fails to meet, I will deduct points until none remain for the category. In other words, you might meet several of the criteria while receiving a score of 0 for the category.
The coding standard boils down to formatting and documentation. These are basic programming skills, and our requirements are not complicated, so there is no excuse for not following the coding standard.
There are two things that will automatically get you a zero in this category:
- Not commenting your code
- Global variables
For full credit, your program must meet all of the project specifications. Each specification will be graded somewhat independently, so it's possible to earn full, partial, or no credit for each specification.
You need to test your programs thoroughly in order to ensure that they produce good output for all normal input. You also need to include error handling code to prevent special cases from crashing the program or creating garbage output.
Output Formatting (if applicable)
Program output must always follow the project specifications and be labeled and formatted so that it is easily readable and understandable to a reader who has not seen the source code.
I would like to give special emphasis to the last point. You may know what your unlabeled output means, but your user doesn't, and it's not their job to figure it out.
For each project, you will receive a scoresheet with comments via email. I will do my best to thoroughly explain why points are being deducted and if you believe there is a problem with a scoresheet, please email me ASAP.
There are two kinds of partial credit you can receive for each project specification:
- Partial credit for components that partially meet project specifications
- Partial credit for components that do not the project specifications, but would if it weren't for a small programming mistake.
For the first, points will be assigned based on the degree to which the component meets project specifications.
For the second, you must understand that I am not obligated to try to find your mistakes in order to give you partial credit for program components that do not work properly. That being said, I will usually try to do so for your benefit. Because of this, it's in your best interest to make your code as readable as possible.
I try to grade as accurately and consistently as possible, but if you believe I have graded one of your projects unfairly compared to other students in this section, I will take another look. However, I have no control over how the other TAs grade their students, so I will not consider complaints along the line of "so-and-so didn't take off points for [insert problem here]". In other words, all grading decisions are final for the current project.
You can still let me know about these kinds of issues, but any changes I make will only affect future projects. If you believe that grading between the TAs is unequal in general, you should inform Dr. Enbody directly.