15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.
Filter candidates by capability, correctness, memory capacity, and constraints before comparing speed. Match representative workload sizes and include transfers. Preserve a fallback when a device is absent. The table below contains invented demonstration results, explicitly marked as such; replace them with real measurements only after validation. Do not fit a policy to one lucky run.
Practice and evidence: Predict the example or draw its state transitions. Change one assumption, test the boundary, and record the actual result. Explain what this small model does not establish about a production system.
candidates=[{"name":"CPU demo","correct":True,"ms":8},{"name":"GPU demo","correct":True,"ms":11},{"name":"Broken demo","correct":False,"ms":1}]
valid=[c for c in candidates if c["correct"]]
print("Hypothetical winner:",min(valid,key=lambda c:c["ms"])["name"])
Expected result: Hypothetical winner: CPU demo
Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.