Skip to content

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

  1. Open https://arcade.makecode.com and switch to Python.
  2. Paste the mini-lesson code below and run it once.
  3. Put this on the board: Run → Predict → Change one thing → Test.
  4. Pair students Driver/Navigator and plan the 0:24 swap.
  5. 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.

items = ["key", "map", "coin"]
score = 0

def report(item):
    print("Found " + item)

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