Rubric — Assignment 1 (20 marks)
Applies to Assignment 1. Marks are per criterion; use the band descriptors, not gut feeling. Award half-bands where genuinely between.
Task 1 — Decomposition (5)
| Band | Descriptor |
|---|
| 5 | Tree covers the whole task; every leaf is genuinely small; assumptions are stated, specific, and marked for impact; the marked assumption is defended. |
| 4 | Tree complete but one leaf is really two subproblems, or one assumption is vague ("assume normal things"). |
| 2–3 | Major leaf missing (e.g. the bonus decision) or assumptions absent; the shape is visible but not executable. |
| 0–1 | A single undecomposed step, or the tree restates the scenario in other words. |
Task 2 — Rules as pseudocode (6)
| Band | Descriptor |
|---|
| 5–6 | All rules present and ordered correctly (discount applies to the whole purchase; bonus requires ≥ 2 purchased); boundary values right (5 credits, 8 attendances); outputs named; every purchase-size answer traceable to the rules. |
| 3–4 | Rules present but one boundary wrong, or the discount applied per-credit instead of per-purchase, or bonus tested before the purchase size is known. |
| 1–2 | Rules ambiguous where the scenario was precise, or Python used but doing the thinking invisibly. |
| 0 | The scenario restated; no executable precision. |
Task 3 — Decision and flowchart (5)
| Band | Descriptor |
|---|
| 5 | Flowchart reaches one recommendation; every branch is reachable; the contested branch is annotated with a genuine two-sided disagreement. |
| 4 | Correct chart; the "contested" branch annotation is decorative (no real alternative given). |
| 2–3 | Chart has an unreachable branch or a missing exit path, or the recommendation contradicts the task-2 rules. |
| 0–1 | No chart, or arrows into nowhere throughout. |
Task 4 — The hostile friend (4)
| Band | Descriptor |
|---|
| 4 | A concrete input where intuition and rules diverge; both answers derived; the rule change that would flip the verdict identified. |
| 3 | Concrete divergence found but the rule change is vague. |
| 1–2 | Asserts the friend is wrong/right without a concrete input. |
| 0 | Not attempted. |
Cross-cutting adjustments
- −1 (once) if assumptions appear after results that depend on them.
- +0 marks for extra Python: code is accepted as an appendix, never as a substitute for pseudocode precision.
- Submissions violating the length guide by more than double are returned for one resubmission at 90% cap.