Week 26 — Python mini-project¶
At a glance
| Date | Friday, March 5, 2027 |
| Unit | 3 — From Blocks to Text |
| Big idea | A small finished program is better than a big unfinished idea. |
| Goal | Students build, test, and share a tiny Python project that uses at least two ideas from Unit 3. |
| Student accounts needed | None. MakeCode Arcade runs in the browser without sign-in. |
| Prep time | 5 minutes |
Why this lesson looks the way it does¶
The mini-project is intentionally small because this class meets once a week and has no homework. Students have about 24 minutes of build time, not a semester. The success criteria are explainability: can the student point to a variable, condition, loop, list, or function and say what it does?
The mixed-age strategy stays explicit: Starters never face a blank page, Builders work from a template, and Extenders add features or write from scratch. Driver/Navigator pairing is not just classroom management here; it shares the typing load and makes students verbalize syntax.
CSTA 2026 standards¶
| Concept area | Connection |
|---|---|
| Algorithms & Design | Students design, test, and revise small programs within constraints |
| Programming | Students read and write Python syntax for the week's concept |
| Data & Analysis | Students use program output or test results as evidence |
| Systems & Security | Students work in no-account browser tools and avoid private information |
| Computing & Society | Students explain technical work clearly to an audience |
"I can…" objectives¶
By the end of today, students can say:
- I can read the main Python pattern for today's lesson.
- I can make and test a small change to working code.
- I can explain one important line to my partner.
- I can use evidence from running the code before claiming it works.
Teacher prep — the 5-minute version¶
- Open https://arcade.makecode.com and switch to Python.
- Paste the mini-lesson code below and run it once.
- Put this on the board: Run → Predict → Change one thing → Test.
- Pair students Driver/Navigator and plan the 0:24 swap.
- Keep Week 18–22 examples nearby for students who need a remix base.
Minute-by-minute run sheet¶
0:00–0:04 — Anchor¶
"Last Friday we watched AI write code and tested it instead of trusting it. Today we keep building in Python, but the win is still the same: understand a small program well enough to change it and test it."
0:04–0:12 — Mini-lesson¶
Show this deliberately tiny finished example.
score = 0
hero = sprites.create(img("""
. 2 2 .
2 2 2 2
. 2 2 .
"""), SpriteKind.player)
def on_a_pressed():
global score
score = score + 1
if score > 3:
hero.say_text("Winner!")
else:
hero.say_text("Score: " + str(score))
controller.A.on_event(ControllerButtonEvent.PRESSED, on_a_pressed)
"This is not fancy. But it is finished, uses a variable, input, and a conditional, and I can test it by pressing A four times."
0:12–0:36 — Paired build¶
"Driver, type only what your pair understands. Navigator, your job is to stop the pair from making five changes before testing one."
Tiered challenges¶
🟢 Starter (grades 5–6): modify working starter code
Use this base. Change messages and the winning number.
score = 0
hero = sprites.create(img("""
. 2 2 .
2 2 2 2
. 2 2 .
"""), SpriteKind.player)
def on_a_pressed():
global score
score = score + 1
if score > 3:
hero.say_text("Winner!")
else:
hero.say_text("Score: " + str(score))
controller.A.on_event(ControllerButtonEvent.PRESSED, on_a_pressed)
🟡 Builder (grades 7–8): write from a template
Choose two ideas: variable + input, list + loop, function + button, or conditional + score.
messages = ["One", "Two", "Three"]
hero = sprites.create(img("""
. 5 5 .
5 5 5 5
. 5 5 .
"""), SpriteKind.player)
def play_messages():
for message in messages:
hero.say_text(message)
pause(600)
Add a button event that calls play_messages().
🔴 Extender (grades 9–10): write from scratch or add features
Design your own tiny project under 20 lines. It must include at least three Unit 3 ideas and a test plan.
Turn it into a tiny collector, quiz, or status display.
0:36–0:42 — Share-out¶
"You have 30 seconds: what did you build, what two Python ideas did you use, and what test proves it works?"
0:42–0:45 — Teaser + prompt¶
"Next time we begin Unit 4. Python taught us logic; now we switch to the web with your first HTML page."
🤔 Think About This¶
Notice one website this week and ask: what parts are content, and what parts are instructions for how it should appear?
Share-out prompt¶
"You have 30 seconds: what did you build, what two Python ideas did you use, and what test proves it works?"
🔌 Unplugged Plan B — if the internet is down¶
| Time | Activity |
|---|---|
| 0:00–0:04 | Same anchor: connect to last Friday and name today's target. |
| 0:04–0:12 | Board model with paper code cards. Underline names, circle punctuation, and box indented blocks. |
| 0:12–0:26 | Pairs run a paper "human interpreter" trace. One student reads exactly; one student records output or error. |
| 0:26–0:36 | Pairs modify one card, trade with another pair, and test again. |
| 0:36–0:42 | Share one working change and one bug found by reading carefully. |
| 0:42–0:45 | Same teaser and Think About This. |
Common problems & fixes¶
| Problem | What students may see | Fix |
|---|---|---|
| Project idea too large | no error |
Cut to one sprite, one variable, one input, one win condition. |
| Missing colon in copied patterns | SyntaxError: expected ':' |
Check every if, for, and def header. |
| Inconsistent indentation | IndentationError: unindent does not match any outer indentation level |
Re-indent lines in the same block so they align. |
| Mismatched quotes | SyntaxError: unterminated string literal |
Use short messages and matching quotes. |
Using = instead of == |
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='? |
score = 0 stores; score == 0 compares. |
| Student cannot explain borrowed code | no error |
Remove or simplify any line the student cannot explain. |
Vocabulary¶
- Mini-project — a small finished program with a clear goal
- Requirement — something the project must do
- Test plan — checks used to prove the program works
- Remix — building from existing code by understanding and changing it
- Explainability — being able to describe what code does and why
Reflection — fill in after class¶
- Which students could explain their code without prompting?
- Which syntax issue slowed the room down?
- Did pairs test one change at a time?
- What should carry into next week?
Next week: Week 27 — Your First Web Page