Placement paper 1 (Python), test #1, sat Sun 27 Sep 12:26, 50 of 120 min, closed by her. 19/52 (37%), attempt #9. 22 questions, 0 typed blanks; Q12 part 2 'i don't know' and Q20 part 2 unanswered. Held cold on taught material: 17 // 5 and 17 % 5 → 3, 2 (P08 2/2); "4"+"5" → 45 and int() → 9 (P17 2/2, the 25 Sep misconception did not recur); ord/chr (P16 2/2); syntax vs logic error with line numbers (P28 2/2); bubble first pass 1,4,2,5 (A13 2/3); password loop while password != open / input inside / Welcome after (P05 3/3, quotes and colon missing); cinema bands with correct boundaries but printed instead of stored in price and re-read age (P03 2/3); trace table rows (3,3) (0,4) right, no starting row, output -1 from an extra pass (A07 2/4). Lost on untaught content: data types (P01 0/3: list/list/probability), Boolean combination (P10 0/3: evaluated halves, never combined), 3-argument range (P04 0/2), list/2-D/string ops (P11 0/3, P12 0/2, P15 0/3), random (P18 0/1), subroutines (P19 0/4), binary search done as linear (A10 0/2), merge sort shape only (A12 1/2), decomposition/abstraction (A02, A03 0/2). Test data P27 0/3: all three values correctly classed, no expected behaviour given though the scheme required both — an instruction loss. No status changes: placement marking establishes facts only.
Placement done; resume the plan from session 48: three no-notes items, then teach the condition-at-end loop (while True + break) with a worked example and say-backs, then Code Lab a04-repeat capped at 3 runs, then a handwritten while loop with no checklist. Two placement findings to fold in when reached: trace tables must start with the pre-loop row and stop when the condition is false (A07); Boolean and/or/not combination is a knowledge gap, not a slip (P10).
| Topic | Name | Change | Evidence recorded |
|---|---|---|---|
| P08 | Secure → Secure | Placement Q5: 17 // 5 = 3, 17 % 5 = 2, both correct cold, 2/2, 27 Sep — the values form the loose end asked for. | |
| P17 | Developing → Developing | Placement Q6: "4"+"5" → 45 and int("4")+int("5") → 9, both correct cold two days after the misconception, 2/2, 27 Sep. | |
| P16 | Not started → Not started | Placement Q15: ord("D") → 68, chr(67) → C, 2/2 unaided from A = 65, 27 Sep. | |
| P28 | Not started → Not started | Placement Q19: syntax error line 3 (prnt) and logic error line 2 (divides by 3 not 4), both with line and fault, 2/2, 27 Sep. | |
| P05 | Developing → Developing | Placement Q10: password = input() / while password != open / print / password = input() / print("Welcome") — 3/3 on logic; quotes around open and the colon missing, 27 Sep. | |
| P03 | Developing → Developing | Placement Q9: if age < 5 / elif age < 16 / else — bands and boundaries all correct, 2/3; every branch printed rather than assigning to price, and age re-read from input although the question said it already held a value, 27 Sep. | |
| A07 | Not started → Not started | Placement Q11 trace of a while loop: rows (3,3) and (0,4) correct, starting row (5,2) omitted, output given as -1 — one pass too many after a > 0 became false. 2/4, 27 Sep. | |
| A13 | Not started → Not started | Placement Q21: first pass of bubble sort on 5,1,4,2 → 1,4,2,5 correct (2/2); 'how does it know it is sorted' → 'it checks the list and finds it sorted', not a pass with no swaps. 2/3, 27 Sep. | |
| A12 | Not started → Not started | Placement Q22: 'splits the list into multiple peaks and puts them together after sorting them' — split/merge shape present, single-item stopping point and merge-in-order absent. 1/2, 27 Sep. | |
| A01 | Not started → Not started | Placement Q1: 'a set of instructions the things will follow' — 1/1, purpose clause missing, 27 Sep. | |
| A02 | Not started → Not started | Placement Q2: 'taking the code apart' — 0/1, 27 Sep. Not yet taught. | |
| A03 | Not started → Not started | Placement Q3: 'a different way of using code' — 0/1, 27 Sep. Not yet taught. | |
| P01 | Not started → Not started | Placement Q4: list / list / probability for integer / real / Boolean — 0/3, 27 Sep. Data type names not known; treat as untaught. | |
| P10 | Not started → Not started | Placement Q8: evaluated each half ('x is true and y is false') but never combined with and/or/not; part 2 not(x == y) → false. 0/3, 27 Sep. Combining conditions is a gap. | |
| P04 | Developing → Developing | Placement Q7: range(2, 9, 3) → wrote 2,3,4,5,6,7,8,8,7,6,5,4 — the step argument not understood. 0/2, 27 Sep. Three-argument range untaught. | |
| P11 | Not started → Not started | Placement Q12: scores[2] → 7 (one-based), 'i don't know' for changing an item, 'count items in scores' for len. 0/3, 27 Sep. Untaught. | |
| P12 | Not started → Not started | Placement Q13: grid[1][0] → 1, grid[0][2] → 5. 0/2, 27 Sep. Untaught. | |
| P15 | Not started → Not started | Placement Q14: len(name) → 'paddington', name[0:3] → 'paddington', join → print("{first} {last}") (no f). 0/3, 27 Sep. Untaught. | |
| P18 | Not started → Not started | Placement Q16: dice = while i in range (1, 7) — a loop offered for a random call. 0/1, 27 Sep. Untaught. | |
| P19 | Not started → Not started | Placement Q17: no def, no return, no call — read width and height from input and multiplied. 0/4, 27 Sep. Subroutines untaught. | |
| P27 | Not started → Not started | Placement Q18: 15 / 18 / 10 for normal / boundary / erroneous on 11–18 — all three values correctly classed, no expected behaviour stated for any; scheme needs both, 0/3, 27 Sep. | |
| A10 | Not started → Not started | Placement Q20: compared 3, 8, 12, 21, 27 in turn — linear, not binary; 'why must the list be sorted' left unanswered. 0/2, 27 Sep. Untaught. |