45 days · a small, structured step each day
Know what to study next.
Concept revision → two practice tasks → scheduled mocks. Normal days take about 20 minutes; mock days need one uninterrupted 30-minute sitting. This is Python tracing and debugging practice, not a complete board-exam syllabus or a guarantee of readiness.
Free guidance. Honest access and progress.
Planning and practice tasks are free. Paper 1 is free; Papers 2–12 require existing Pro access. Full plan completion includes those paid papers. This is not an Exam Pack checkout.
Practice completion uses the two assigned recorded solves, including prior mastery. Mock completion requires a full, on-time graded attempt since the selected start date. Reading and reflection are guidance, not tracked completion.
Guest practice is useful, but only account-recorded results count towards a saved plan. There are no manual “done” buttons. Your reading, reflection and teaching examples do not award completion or XP.
Choose your dates
The syllabus is public. Sign in to load your account’s saved dates and progress.
Your recorded progress
Go to your next core day →Dates are a guide, not a deadline penalty. Early genuine sittings count after the selected start. Catch-up remains available after day 45. A locked Pro paper stays unfinished, but you can still practise all free tasks.
Suggested weak-topic revision
Optional study reminders
Off by default. With your explicit consent and a browser push subscription, the existing daily job can send a gentle reminder for an unfinished, unlocked study day. No emails, private scores or guilt/streak-loss claims. Delivery is best-effort around 14:00 UTC (19:30 IST), not a guaranteed alarm.
Sign in to load reminder settings.
Your full 45-day syllabus
33 practice days · 66 distinct free tasks · 12 mock sittings. Open a day for its actual lesson, practice links and review prompt. Dates are never compressed if your exam is sooner.
Day 1 · 20 minNames, types and readable outputSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Assignment binds a name to a value. Check the type before combining text and numbers; indentation defines blocks rather than decoration.
Predict this teaching example before revealing its output. This is revision, not a graded task.
count = 3
label = "bugs"
print(count, label, type(count).__name__)Show example output
3 bugs int
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Explain the difference between defining a name and using it. Save one corrected line in your own notes.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 2 · 20 minInteger operators and precedenceSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Trace multiplication before addition and distinguish floor division from ordinary division. Use parentheses when the intended grouping is unclear.
Predict this teaching example before revealing its output. This is revision, not a graded task.
print(9 // 4, 9 % 4, 2 + 3 * 4)Show example output
2 1 14
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Write a quotient/remainder check: dividend = divisor × quotient + remainder.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 3 · 20 minConditions and truth valuesSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
A comparison produces a Boolean, while assignment changes a binding. Empty collections and numeric zero are falsy; compare deliberately rather than guessing.
Predict this teaching example before revealing its output. This is revision, not a graded task.
items = []
print(bool(items), 4 == 4, not 0)Show example output
False True True
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
List two falsy values and rewrite one condition in plain English.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 4 · 30 min + optional reviewBaseline — Paper 1Set a start date to see the calendar dateSyllabus preview · not tracked
Foundations · 25 questions · 30 minutes
Free paper
Treat this as a diagnostic, not a promise of marks. Some topics may be unfamiliar. Keep the full 30-minute slot free and finish the sitting on time.
Open free paper →Optional answer review · about 5 minutes after the sitting
After grading, inspect incorrect and unanswered choices. Write one rule you missed, then use your weak-topic suggestions before the next paper.
What completes this day: One full 25-question sitting of this paper, graded on time since your selected start date. A late or abandoned sitting does not complete the day.
Day 5 · 20 minRange boundaries and stepSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
range includes its start but excludes its stop. Trace the actual generated integers before reasoning about the body of a for loop.
Predict this teaching example before revealing its output. This is revision, not a graded task.
print(list(range(2, 9, 2)))Show example output
[2, 4, 6, 8]
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Write the first value, last included value and first excluded value for each solved range.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 6 · 20 minWhile loops must make progressSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
A while loop rechecks its condition before each iteration. Identify the variable that changes toward termination and trace it after each update.
Predict this teaching example before revealing its output. This is revision, not a graded task.
n = 3
out = []
while n > 0:
out.append(n)
n -= 1
print(out)Show example output
[3, 2, 1]
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Make a three-column trace: condition, body output, updated counter.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 7 · 20 minBreak, continue and loop elseSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
break exits a loop; continue skips the remainder of one iteration. Loop else runs only when iteration ends without break.
Predict this teaching example before revealing its output. This is revision, not a graded task.
out = []
for n in range(5):
if n == 2:
continue
out.append(n)
print(out)Show example output
[0, 1, 3, 4]
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Compare a loop that finds a match with one that exhausts its input.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 8 · 30 min + optional reviewCore checkpoint — Paper 2Set a start date to see the calendar dateSyllabus preview · not tracked
Core Practice · 25 questions · 30 minutes
Requires existing Pro access — not a free task or a separate Exam Pack purchase
Use your baseline weak topics for a short revision before starting, not during the sitting. Submit inside the unchanged server deadline.
Open paper · Pro required →Optional answer review · about 5 minutes after the sitting
After grading, inspect incorrect and unanswered choices. Write one rule you missed, then use your weak-topic suggestions before the next paper.
What completes this day: One full 25-question sitting of this paper, graded on time since your selected start date. A late or abandoned sitting does not complete the day.
Day 9 · 20 minStrings return new valuesSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Strings are immutable. Methods such as upper and strip return a new string; calling a method without using its result does not change the original binding.
Predict this teaching example before revealing its output. This is revision, not a graded task.
word = " debug "
clean = word.strip().upper()
print(clean, len(word))Show example output
DEBUG 9
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Show where the returned string is stored. Explain why the original string length did not change.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 10 · 20 minString indices and slicesSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Negative indices count from the end. Slices exclude their stop and can use a step; trace index positions instead of reading a slice as a word.
Predict this teaching example before revealing its output. This is revision, not a graded task.
text = "coding"
print(text[-1], text[1:5:2])Show example output
g oi
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Draw the six index positions and mark exactly which positions a slice includes.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 11 · 20 minList lookup and membershipSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
A list index selects one element; membership asks whether an equal value is present. Index zero is the first element, and negative one is the last.
Predict this teaching example before revealing its output. This is revision, not a graded task.
values = [4, 7, 9]
print(values[-1], 7 in values)Show example output
9 True
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Separate the question “which position?” from “is this value present?”.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 12 · 30 min + optional reviewTricky-edge checkpoint — Paper 3Set a start date to see the calendar dateSyllabus preview · not tracked
Tricky Edges · 25 questions · 30 minutes
Requires existing Pro access — not a free task or a separate Exam Pack purchase
Trace mutation and boundaries on paper or in your head. Do not run the snippets while sitting the test; review the recorded result afterwards.
Open paper · Pro required →Optional answer review · about 5 minutes after the sitting
After grading, inspect incorrect and unanswered choices. Write one rule you missed, then use your weak-topic suggestions before the next paper.
What completes this day: One full 25-question sitting of this paper, graded on time since your selected start date. A late or abandoned sitting does not complete the day.
Day 13 · 20 minCopy, alias and append versus extendSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Two names can point to one list. A shallow copy creates a new outer list. append adds one object; extend iterates over its argument.
Predict this teaching example before revealing its output. This is revision, not a graded task.
a = [5]
b = a.copy()
b.extend([6, 7])
print(a, b)Show example output
[5] [5, 6, 7]
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Sketch names pointing to objects, then describe which object each mutation changes.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 14 · 20 minDictionary lookup with a fallbackSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Bracket lookup raises for a missing key. get can supply a fallback without inserting it. Verify whether a key exists before assuming a value is stored.
Predict this teaching example before revealing its output. This is revision, not a graded task.
counts = {"a": 2}
print(counts.get("b", 0), len(counts))Show example output
0 1
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Contrast missing keys, stored None values and explicit defaults.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 15 · 20 minDictionary updates and iterationSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Updating an existing key replaces its value without moving its insertion position. Adding or removing keys during direct iteration changes the dictionary structure.
Predict this teaching example before revealing its output. This is revision, not a graded task.
d = {"first": 1, "second": 2}
d["first"] = 4
print(list(d.items()))Show example output
[('first', 4), ('second', 2)]2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Explain the difference between changing a value and changing dictionary size.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 16 · 30 min + optional reviewMixed foundations — Paper 4Set a start date to see the calendar dateSyllabus preview · not tracked
Full Mock · 25 questions · 30 minutes
Requires existing Pro access — not a free task or a separate Exam Pack purchase
Check your topic breakdown rather than only the total score. Use the latest weak-topic suggestions to choose your next short revision.
Open paper · Pro required →Optional answer review · about 5 minutes after the sitting
After grading, inspect incorrect and unanswered choices. Write one rule you missed, then use your weak-topic suggestions before the next paper.
What completes this day: One full 25-question sitting of this paper, graded on time since your selected start date. A late or abandoned sitting does not complete the day.
Day 17 · 20 minFunction calls and returnsSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
A function body runs when called. Reaching its end without return yields None; a printed value is not the same as a returned value.
Predict this teaching example before revealing its output. This is revision, not a graded task.
def triple(n):
return n * 3
print(triple(5))Show example output
15
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Describe what the caller receives, not just what appeared in the output pane.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 18 · 20 minDefault arguments and shared stateSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Default expressions run once when a function is defined. A mutable default can be reused across calls; use a None sentinel when you need a fresh container.
Predict this teaching example before revealing its output. This is revision, not a graded task.
def collect(n, values=None):
if values is None:
values = []
values.append(n)
return values
print(collect(3), collect(4))Show example output
[3] [4]
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Trace definition time separately from call time. Explain which object a default stores.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 19 · 20 minArguments and returned tuplesSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Positional arguments bind by order and keywords by name. Comma-separated return values form a tuple, which must match the unpacking targets.
Predict this teaching example before revealing its output. This is revision, not a graded task.
def pair(a, b):
return a + b, a - b
x, y = pair(b=2, a=8)
print(x, y)Show example output
10 6
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Map every argument to its parameter before tracing the function body.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 20 · 30 min + optional reviewControl-flow mastery — Paper 5Set a start date to see the calendar dateSyllabus preview · not tracked
Control Flow & Expressions · 25 questions · 30 minutes
Requires existing Pro access — not a free task or a separate Exam Pack purchase
This new paper covers ranges, branches, short-circuiting and operator rules. It has authored explanations available only after the sitting is graded.
Open paper · Pro required →Optional answer review · about 5 minutes after the sitting
After grading, inspect incorrect and unanswered choices. Write one rule you missed, then use your weak-topic suggestions before the next paper.
What completes this day: One full 25-question sitting of this paper, graded on time since your selected start date. A late or abandoned sitting does not complete the day.
Day 21 · 20 minLocal names and scopeSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Assignment inside a function normally creates a local binding. Reading that local before assigning it causes UnboundLocalError, even when a global name exists.
Predict this teaching example before revealing its output. This is revision, not a graded task.
value = 8
def read():
local = 2
return value + local
print(read(), value)Show example output
10 8
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Annotate each name as local, enclosing, global or built-in.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 22 · 20 minTuple immutability and unpackingSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
A tuple fixes its element references, not the internal state of a referenced mutable object. Unpacking consumes values in order and must match the target pattern.
Predict this teaching example before revealing its output. This is revision, not a graded task.
left, right = (6, 9)
left, right = right, left
print(left, right)Show example output
9 6
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Explain the difference between replacing a tuple slot and mutating a list stored in one.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 23 · 20 minChoose the right exception handlerSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
A handler matches exception classes and their subclasses. Specific handlers should normally precede broad ones. Recovery code should not silently hide unrelated programming errors.
Predict this teaching example before revealing its output. This is revision, not a graded task.
try:
int("nope")
except ValueError:
print("invalid number")Show example output
invalid number
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Name the operation that fails and the first matching handler.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 24 · 30 min + optional reviewCollections checkpoint — Paper 6Set a start date to see the calendar dateSyllabus preview · not tracked
Collections & Mutation · 25 questions · 30 minutes
Requires existing Pro access — not a free task or a separate Exam Pack purchase
Pay attention to aliases, shallow copies and dictionary order. After grading, compare each incorrect choice with the explicit explanation.
Open paper · Pro required →Optional answer review · about 5 minutes after the sitting
After grading, inspect incorrect and unanswered choices. Write one rule you missed, then use your weak-topic suggestions before the next paper.
What completes this day: One full 25-question sitting of this paper, graded on time since your selected start date. A late or abandoned sitting does not complete the day.
Day 25 · 20 minTry, except and elseSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
The else block runs only if try finishes normally. A caught exception still skips else. finally is a separate cleanup step and is not conditional on success.
Predict this teaching example before revealing its output. This is revision, not a graded task.
out = []
try:
n = int("12")
except ValueError:
out.append("bad")
else:
out.append(n)
print(out)Show example output
[12]
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Trace success and failure paths separately instead of assuming every block executes.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 26 · 20 minSplit, join and whitespaceSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Default split collapses whitespace. With an explicit separator it preserves empty fields. join inserts a separator between string items without adding one at the ends.
Predict this teaching example before revealing its output. This is revision, not a graded task.
parts = " red blue ".split()
print("/".join(parts))Show example output
red/blue
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Write the intermediate list before joining it. Check whether any fields are empty.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 27 · 20 minNested collections and access pathsSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Read a nested access one bracket at a time. Each intermediate value has its own type, and a valid outer key does not imply a valid inner index or key.
Predict this teaching example before revealing its output. This is revision, not a graded task.
data = {"row": [7, 8]}
print(data["row"][1])Show example output
8
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
State the type of each intermediate value in the access chain.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 28 · 30 min + optional reviewFunctions and scope — Paper 7Set a start date to see the calendar dateSyllabus preview · not tracked
Functions & Scope · 25 questions · 30 minutes
Requires existing Pro access — not a free task or a separate Exam Pack purchase
This paper includes argument binding, defaults, closures and recursion. Use the explanations to separate local-name errors from incorrect returned values.
Open paper · Pro required →Optional answer review · about 5 minutes after the sitting
After grading, inspect incorrect and unanswered choices. Write one rule you missed, then use your weak-topic suggestions before the next paper.
What completes this day: One full 25-question sitting of this paper, graded on time since your selected start date. A late or abandoned sitting does not complete the day.
Day 29 · 20 minFinally and defensive inputsSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Cleanup runs during normal exit and exception propagation. A return in finally can replace an earlier return, and a new exception in finally can mask the original one.
Predict this teaching example before revealing its output. This is revision, not a graded task.
steps = []
try:
steps.append("work")
finally:
steps.append("cleanup")
print(steps)Show example output
['work', 'cleanup']
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Ask whether cleanup changes the returned object or replaces the pending result.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 30 · 20 minClass state versus instance stateSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
A class attribute is shared lookup state. Assigning through an instance can create a shadowing attribute, while mutating a shared class container changes that common object.
Predict this teaching example before revealing its output. This is revision, not a graded task.
class Box:
size = 2
a, b = Box(), Box()
a.size = 5
print(a.size, b.size)Show example output
5 2
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Draw the class dictionary and the instance dictionary separately. The name-lookup task is prerequisite practice, not another class-specific problem.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 31 · 20 minText streams and parsing prerequisitesSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
A text stream has a cursor: reads advance it, seek repositions it, and closing ends access. StringIO provides a deterministic in-memory stream without a real file.
Predict this teaching example before revealing its output. This is revision, not a graded task.
from io import StringIO
f = StringIO("hello")
print(f.read(1), f.read(2))Show example output
h el
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Write cursor positions before and after each read. The two recorded tasks practise string handling; stream mastery is checked by Paper 9.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 32 · 30 min + optional reviewException paths — Paper 8Set a start date to see the calendar dateSyllabus preview · not tracked
Exceptions & Defensive Code · 25 questions · 30 minutes
Requires existing Pro access — not a free task or a separate Exam Pack purchase
Identify the exception that escapes, not just the first one raised. Separate cleanup and handler ordering; late or abandoned attempts do not complete this day.
Open paper · Pro required →Optional answer review · about 5 minutes after the sitting
After grading, inspect incorrect and unanswered choices. Write one rule you missed, then use your weak-topic suggestions before the next paper.
What completes this day: One full 25-question sitting of this paper, graded on time since your selected start date. A late or abandoned sitting does not complete the day.
Day 33 · 20 minObject protocols and method lookupSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Python built-ins call object protocols such as __len__. Methods accessed on an instance bind self automatically. Replacing a name with an incompatible object can fail at lookup or call time.
Predict this teaching example before revealing its output. This is revision, not a graded task.
class Queue:
def __len__(self):
return 4
print(len(Queue()))Show example output
4
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Compare calling a bound method with explicitly supplying the instance through the class. These tasks check length and argument prerequisites; Paper 10 checks protocols.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 34 · 20 minSorting creates or mutatesSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
sorted creates a new list; list.sort mutates and returns None. A key function receives one item at a time, and stable sorting preserves the input order of equal keys.
Predict this teaching example before revealing its output. This is revision, not a graded task.
names = ["four", "a", "six"]
print(sorted(names, key=len))Show example output
['a', 'six', 'four']
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Write the key for every item before ordering the results.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 35 · 20 minLazy iterators and comprehension prerequisitesSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
An iterator remembers its position and can be exhausted. A list comprehension computes eagerly; a generator expression computes items only as they are requested.
Predict this teaching example before revealing its output. This is revision, not a graded task.
it = iter([4, 5, 6])
print(next(it), list(it), list(it))Show example output
4 [5, 6] []
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Track what remains after each consuming operation. The catalogue tasks cover iteration prerequisites; Paper 11 checks generator behavior.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 36 · 30 min + optional reviewStrings and streams — Paper 9Set a start date to see the calendar dateSyllabus preview · not tracked
Strings & File-like Streams · 25 questions · 30 minutes
Requires existing Pro access — not a free task or a separate Exam Pack purchase
Reserve 30 minutes. Trace cursor movement and string return values; the examples use in-memory streams, not local files or network resources.
Open paper · Pro required →Optional answer review · about 5 minutes after the sitting
After grading, inspect incorrect and unanswered choices. Write one rule you missed, then use your weak-topic suggestions before the next paper.
What completes this day: One full 25-question sitting of this paper, graded on time since your selected start date. A late or abandoned sitting does not complete the day.
Day 37 · 20 minRecursion and function prerequisitesSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Every recursive call needs a smaller problem and a reachable base case. Trace the returning values in reverse call order rather than reading only the first call.
Predict this teaching example before revealing its output. This is revision, not a graded task.
def countdown(n):
return [] if n == 0 else [n] + countdown(n - 1)
print(countdown(3))Show example output
[3, 2, 1]
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Draw the recursive call stack and identify the base case. The two tracked tasks reinforce conditions and value conversion; recursion itself is covered in Papers 7 and 12.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 38 · 20 minSets, duplicates and grouped outputSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
A set keeps unique hashable values and has no guaranteed iteration order. Dictionary keys are also unique: later assignments replace earlier values for a repeated key. Sort a set if you need deterministic ordered output.
Predict this teaching example before revealing its output. This is revision, not a graded task.
counts = {}
for ch in "level":
counts[ch] = counts.get(ch, 0) + 1
print(len(set("level")), counts)Show example output
3 {'l': 2, 'e': 2, 'v': 1}2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Explain why repeated characters change dictionary counts but not the set size. Never rely on a raw set printing in a fixed order.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 39 · 30 min + optional reviewClasses and objects — Paper 10Set a start date to see the calendar dateSyllabus preview · not tracked
Classes & Object Behaviour · 25 questions · 30 minutes
Requires existing Pro access — not a free task or a separate Exam Pack purchase
Check instance state, inheritance and protocol contracts. This is objective Python practice, not a proctored credential or a full board-exam paper.
Open paper · Pro required →Optional answer review · about 5 minutes after the sitting
After grading, inspect incorrect and unanswered choices. Write one rule you missed, then use your weak-topic suggestions before the next paper.
What completes this day: One full 25-question sitting of this paper, graded on time since your selected start date. A late or abandoned sitting does not complete the day.
Day 40 · 20 minMixed trace: loop steps and textSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Use a trace table when several rules interact. Keep track of the iterator value, the current collection and the string result separately.
Predict this teaching example before revealing its output. This is revision, not a graded task.
out = []
for n in range(1, 4):
out.append("x" * n)
print(out)Show example output
['x', 'xx', 'xxx']
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Explain every output item using an iteration number, not just the final result.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 41 · 20 minWeak-topic clinic and safe boundariesSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Use the latest full, on-time paper to identify weak topics. Keep the fixed core tasks below; targeted revision suggestions are supplemental and do not create extra completion checkboxes.
Predict this teaching example before revealing its output. This is revision, not a graded task.
items = [3, 8]
print(items[-1], {"ready": True}.get("missing", False))Show example output
8 False
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Choose one server-derived weak-topic suggestion, revisit its rule and explain a wrong answer from your latest paper.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 42 · 30 min + optional reviewIterators and sorting — Paper 11Set a start date to see the calendar dateSyllabus preview · not tracked
Iterators, Sorting & Comprehensions · 25 questions · 30 minutes
Requires existing Pro access — not a free task or a separate Exam Pack purchase
Trace which operation consumes each iterator value. Do not assume reverse sorting reverses the order of equal-key records.
Open paper · Pro required →Optional answer review · about 5 minutes after the sitting
After grading, inspect incorrect and unanswered choices. Write one rule you missed, then use your weak-topic suggestions before the next paper.
What completes this day: One full 25-question sitting of this paper, graded on time since your selected start date. A late or abandoned sitting does not complete the day.
Day 43 · 20 minFinal practice: bounds and rebindingSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Review the distinction between changing a loop variable and changing an iterator. Also distinguish rebinding a local name from mutating an object shared with the caller.
Predict this teaching example before revealing its output. This is revision, not a graded task.
values = []
for n in range(2):
values.append(n + 10)
print(values)Show example output
[10, 11]
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Write one boundary rule and one scope rule you can recall without opening the solution.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 44 · 20 minFinal revision and exam techniqueSet a start date to see the calendar dateSyllabus preview · not tracked
1. Concept revision · 5 minutes
Predict before running. If a question is unclear, flag it and move on; reserve review time. A planned exam date changes warnings, not the length of this 45-day schedule.
Predict this teaching example before revealing its output. This is revision, not a graded task.
text = "check"
print(len(text), {"score": 6}.get("score"))Show example output
5 6
2. Recorded practice · about 10 minutes
3. Reflection · 5 minutes
Prepare a checklist: indices, stop exclusivity, return versus print, mutation, scope and exception type. Do not cram multiple 30-minute mocks into one short session.
What completes this day: Both assigned problems must have recorded solved results. Prior mastery counts and is labelled; reading and reflection are not tracked.
Day 45 · 30 min + optional reviewFinal cumulative paper — Paper 12Set a start date to see the calendar dateSyllabus preview · not tracked
Cumulative Python Challenge · 25 questions · 30 minutes
Requires existing Pro access — not a free task or a separate Exam Pack purchase
Use this paper to measure your current Python tracing skills. Completion records the sitting, not guaranteed exam readiness or a guaranteed score. If you missed earlier days, keep catching up after the planned end.
Open paper · Pro required →Optional answer review · about 5 minutes after the sitting
After grading, inspect incorrect and unanswered choices. Write one rule you missed, then use your weak-topic suggestions before the next paper.
What completes this day: One full 25-question sitting of this paper, graded on time since your selected start date. A late or abandoned sitting does not complete the day.