Marking Summary Correcness (55): - done by automated marking script - the test suite used in the testing is available on the main course page. Testing Strategy (15): - In general, the mapping was (15,12,9,6,3,0) -> (t,g,f,p,i,n) where t=thorough, g=good, f=fair, p=poor, i=incomplete, n=none - The above may not completely apply - in that case, see the comments on your paper - Make sure you separate the actual test cases and the report. The report is meant to be short/concise/enough detail which basically outlines what your strategy was, not just your results Style (15): - Comments in RED - Just looked at teamRoster and banquetTalk predicates - [MOD] Watch your modularity; the solutions give a pretty good idea of how to modularize your code - basically, each time you need a specific thing done, if it is not completely trivial, or done easily, then you should *probably* use a helper to modularize your code - Marks deducted for missing comments - Generally followed the same marking convention as in Testing Strategy Logic & Efficiency (15): - Comments in BLUE - Just looked at teamRoster and banquetTalk predicates - Using = --> (-5) - you can just use the same variable name twice - [APP] Using append instead of [Head|REST] to get at elements in a list - [UN] Creating unnecessary lists or variables (using different vars when could be the same) - [BR] Breaking apart list when not certain you can (most did this in banquetTalk - there only case was assuming there were at least 2 people in the list, but it could have been empty) - [MC] Missing constraints (ie, by not using playerList) or Missing constraints in banquetTalk -- some just checked the first against the second but not the second against the third if that failed (this is a logical step that should have been used). - [BC] Missing base cases (or unnecessary base cases - eg. checking for empty list as base case for banquetTalk, and then using playerList, which has a basecase which takes care of this) General: - There were stylistic, logical, and efficient ways to do things, but having one predicate that checks for all the players in all the positions (for teamRoster) was in general, not rewarded (if you had 6,7,8,... rules) - however, it could still be elegantly done in this sort of way, and you received full marks for this, but I think the solns provide the best way to do this. - When trying to figure out where you lost marks, find the letter (g,f, etc), which gives you a preliminary mark based on codes, then look for further deductions. eg, if on Logic/Effic. you got a [G], but used "=", you really got 12-5=7.