Generally, only the first occurrence of a problem warranted a deduction in marks.  As such, subsequent occurrences may not be highlighted.


Correctness - C : 60 marks

-         Marked mostly by automated script

-         On #7 (-4) for each of a/b/c/d if no HOFs used.  (-2) for improper use in each of a/b/c/d

-         If you left in the courses DB, you lost 10 marks from the correctness, even though it did not directly reflect your correctness mark as it was commented out and re-run.

-         Basically, if there were any reasons that I had to modify anything in your code to make it work, you lost 10 marks


Style - S : 10 marks

-         Loss of marks for non-logical grouping of functions, non-readability, etc.

-         Easy marks and done very well

-         Should reduce (cdr (cdr …) to (cdd…)

-         Don’t test a helper function in the base case and then, if it fails, call it in the recursive case with the exact same args.  In this case, the helper should take case of the base case in the original function (if possible).  This was usually repeated, and was not an isolated occurrence.

-         Don’t make functions overly complex or convoluted

-         (-5) marks if there were no comments

-         In most cases (for this assignment) nested conds could be avoided


Logic and Efficiency - L : 15 marks

-         Loss of marks for unnecessary functions, building unnecessary lists, etc.

-         Denoted by L’s

-         Most common mistake that resulted in loss of marks was redefining the built-in function member

-         This section was easy marks, and done very well


Testing - T : 15 marks

-         No report -> at most 10/15

-         Not perfect on correctness section implies you cannot receive perfect on testing

-         If testing was very good, but only 1 or 2 mistakes in correctness, 14/15

-         No annotation on output (-3)

-         Up to -5 for redundant testing.  Many had 2 scripts, one for the test cases supplied in the assignment handout, and another on there own tests, many cases of which were repeated from the first test suit

-         In your report, do not claim to have done an exhaustive test (because that is not practical.  The job of testing is to convince, not to prove outright)

-         You lost less marks if you pointed out any errors

-         If you have “missing cases” please run the testscript on your code to find out where your mistakes where.

-         NB: the supplied test cases do not sufficiently test the code