Rubric — Assignment 6 (20 marks)

Applies to Assignment 6. Band descriptors per criterion; award half-bands where genuinely between.

Part 1 — Portfolio pages (8; ~2.7 per page, mark holistically)

BandDescriptor
8Three pages from three distinct blocks; each names three ordered moves with reasons for the order; each generalisation carries a genuine counter-example (a problem where the move misfires); the trace solves the worked instance correctly by method.
6–7Pages complete but one order-justification is circular ("first I read the problem, then I solve it"), or one counter-example is a token denial rather than a real misfire case.
3–5Moves listed without ordering reasons, or counter-examples missing on two pages, or traces copied from the case's published solution wording.
0–2Summaries of the cases rather than a personal method; no distinct-block coverage.

Part 2 — Adversarial review (4)

BandDescriptor
4Three concrete challenges (each names a move or an input); each accept/rebut sentence engages the specific challenge — a rebuttal argues why the misfire does not apply, an acceptance names the corrected move.
2–3Challenges present but generic ("your move might not always work"), or one accept/rebut missing.
0–1Praise instead of challenge; partner unnamed.

Part 3 — Unifying program (8)

CriterionBandDescriptor
(i) Invariant loop2Invariant stated in the paragraph and true of the code; 1 if stated but false, or true but unstated.
(ii) Decomposition2≥ 3 functions, each with a one-line contract (parameters, return, no prints-as-returns); 1 for ≥ 3 functions with vague contracts.
(iii) Test table2≥ 6 rows including one deliberate-failure row with the failure demonstrated (before the fix) or explained; 1 for a happy-path-only table.
(iv) Mapping paragraph2Each program part explicitly tied to a portfolio page's method; 1 for a vague "this shows my method" sentence.
Program quality—Not separately marked, but a program that does not run caps Part 3 at 4.

Cross-cutting modifiers