General Guidelines for Homework Grading Data Definitions ---------------- Structs: ; a Foo is a (make-foo ...) 2 pts (define-struct foo (...)) 3 pts o -1 for a define-struct whose field order doesn't match the data definition o up to -3 for poor choices of which fields to include (irrelevant info, e.g.) Itemizations: ; a Foo is one of 5 pts ; ... ; ... Lists: ; a ListOfFoo is either 5 pts ; empty, or ; (cons Foo ListOfFoo) Examples of Data: 2 pts each, one example for each data type Templates - 5 pts ----------------- Signature: 1 pt Header: 1 pt Template matches Data Definition: 3 pts Functions - 25 points each --------------------------- Signature/Purpose: 5 pts Header: 5 pts Function follows template: 5 pts o -2 if a data definition has two cases and they write 3 (because one case needed an inner cond) o -3 if they forget a recursive call that the template would have given them o -5 if there's nothing resembling the template structure in their code Program Logic: 5 pts o -1 for little errors (using * instead of +, e.g.) o -2 if they saw the logic but didn't tie things together quite right (using struct selectors backwards, e.g.) o -3 if the logic is about half right o -4 if the logic doesn't make much sense o -5 if they never got beyond the template Test Cases: 5 pts o -1 for each untested case, up to 5 pts total. For the first few programs, you can look at the highlighted code to determine how much to take off o -3 if the test cases aren't executable Racket code o -3 if answers aren't included with test cases (they should use (check-expect...), or write a descriptive string for images) o -5 for no test cases Use of Helpers: 5 pts --------------- o -5 if a helper is called for, but they didn't use one o if they use a helper, 1 point for each category under "Functions"