15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.
A scheduler chooses which runnable task receives a turn. Model round-robin with a queue. Each task consumes one unit before returning to the queue if work remains. This deterministic model omits interrupts, context switching, and true parallel execution.
Practice and evidence: Trace A=2 and B=1, then add an empty task and document whether it should enter the runnable queue. Test fairness by checking the execution order.
from collections import deque
ready=deque([("A",2),("B",1)])
order=[]
while ready:
name,left=ready.popleft()
order.append(name)
if left>1: ready.append((name,left-1))
print(" ".join(order))
Expected result: A B A
Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.