General guidelines:
o DOCUMENTATION: Every program needs a contract and purpose.
-1 point for each of these missing on each program (including helper
functions)
-3 if a program uses an undefined form of data (only deduct this
once in an assignment for the same missing data definition)
o DATA DEFINITIONS: Every type of complex data needs a data
definition, appropriate define structs, and examples of the data.
Use the following deductions if no assignment specific criteria:
-3 for no examples of the data
-1 for a define-struct whose field order doesn't match that in the
type comment
-1 for unknown type names in the type comments
up to -3 for poor choices of which fields to include (irrelevant info,
wrong level of detail, etc)
o TEMPLATES: Programs must follow templates when appropriate (exceptions are
non-recursive programs and programs written using map and filter)
-2 to -5 depending on how bad the violation of the template is:
o if a data definition has two cases and they write 3
(because one case needed an inner cond), -2
o if there's nothing resembling the template structure in their
code, -5
o if they forget a recursive call that the template would have
given them, -3
o PROGRAM LOGIC: On program errors that do not come from the templates
(these would be logical errors in their programs, you'll have to use
your judgement. Take off 1-5 points, depending on the point value of
the problem.
-1 for really small errors (like using * instead of +)
-2 if they saw the logic but didn't tie things together quite
right (for example: they used the struct selectors backwards)
-3 if the logic is about halfway right: some okay and some a bit off
-4 if the logic doesn't make much sense
-5 if they never really got beyond the template
o TEST CASES: Every program needs test cases. Take off up to 5 points
for the quality of test cases.
-1 for each untested case, up to 5 points total
-3 if test cases aren't executable Scheme code
-3 if expected answers aren't included with test cases (for images,
expected answers can be descriptive strings)
-5 for no test cases
There are also assignment-specific guidelines for each assignment.