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.