Assignment Grading
Late Assignment Grading
I will accept assignments for grading up to the last day of the term with the
following penalties assessed:
- One letter grade until the following assignment, if any, is due.
- Two letter grades after the following assignment, if any, is due.
- Example: If you turn in the first assignment late but before the second
assignment is due, you will be assessed a one letter grade penalty. However,
if you turn in the first assignment after the second assignment is due, you
will be assessed a two letter grade penalty.
Exceptions to the late penalty will be handled on a case by case basis and in
general will only be honored for cases of personal, family or national
emergencies.
Non-Computer Programming Assignment Grading
I realize the grading of non-computer programming assignments seems to be
very subjective and to a certain degree it probably is. However, I really do try
to use a standard methodology. In that light I have listed items areas I look at
and what I am looking for in each area. The list is not complete nor absolute,
but it is my starting point and should also be a useful guideline for you while
designing, coding and testing your program.
- Content commensurate with the course level. For upper level undergraduate
courses and all graduate level course I expect answers to be well developed
and demonstrate an understanding of the material and not just the ability to
restate facts from the text.
- Content commensurate with the type of question. Questions stating keywords
like: explain, defend, propose, describe, etc., require more thought
development that questions stating keywords like: list, briefly, etc.
- Pertinent Diagrams and Illustrations. The most successful answers almost
always have some sort of diagram or illustration and 'talk to' the
illustration. This is especially true for questions using the terms, explain,
defend, describe, propose, etc.
- English and grammar.
- References. Give credit where credit is due.
Computer Programming Assignment Grading
I know the grading of computer programming assignments seems to be very
subjective and to a certain degree it probably is. However, I really do try to
use a standard methodology. In that light I have listed items areas I look at
and what I am looking for in each area. The list is not complete nor absolute,
but it is my starting point and should also be a useful guideline for you while
designing, coding and testing your program.
Comments
- Do they explain logic or just repeat what the code states?
- Are they in compliance with the Comments in Code policy?
- Do they distract from reading the code?
- Are they indented so the code can still be seen?
- Are they on separate lines or at the end of statements so they can not be
seen without scrolling the edit window?
Readability
- Do you use indenting to show 'ownership' or scoping?
- Do you use spacing between symbols / operators / variables to allow easy
reading of the code?
- Are your code blocks easily recognized?
- Are your code statements wider than a normal written page (about 70-80
characters wide)?
Naming Convention
- Are variable names self-documenting?
- Are function / procedure names self-documenting?
- Are you consistent with your naming convention?
Functionality
- Does the program produce the required output given the prescribed input?
Compliance with Requirements
- Where absolute compliance is required, did you do it? For example, file
names.
- How well did you implement more abstract requirements and is the
implementation complete? For example, if the requirement was to check user
input before processing, can I find a legitimate input that causes an
unhandled error?
- Does the overall GUI or code design meet the standards set in policy
letters or the course text book? For example, if the requirement called for
four separate functions to perform four separate tasks but you decided to
combine all four tasks into one function. You did not code to the
requirements.
Compliance with Generally Accepted Coding Style. The following list
is by no means a complete list but should serve to give you an understanding of
what I am looking at:
- Do your functions follow the rules of loosely coupled and tightly
cohesive?
- Do you avoid the use of global variables or functions unless explicitly
called for?
- Is your class design cohesive and complete with all the data and methods
contained in the class? An exception to this would be C++ friend functions.
- Does your class design follow the rule, private data with public accessor
or mutator functions?
- Did you close all files you opened?
- Did you delete all variable instances you created. i.e., do you have any
memory leaks?
- Did you duplicate code in multiple places in your program instead of
writing a function or calling an existing function?
- Did you cover all possible inputs when designing selection type
conditions? For example, when required is there an else branch in an if
statement or a default handler in a switch statement?
- When you violate any Generally Accepted Coding Standard either mentioned
above or in any prerequisite course, did you document your reasoning? There
are always exceptions to any coding standard but they must be used by
exception and well documented.