Week 22 — Lists — holding many things at once¶
At a glance
| Date | Friday, February 5, 2027 |
| Unit | 3 — From Blocks to Text |
| Big idea | A list stores many related values under one name. |
| Goal | Students use a Python list and a loop to display several messages or items. |
| Student accounts needed | None. MakeCode Arcade runs in the browser without sign-in; Week 25 AI is teacher-demo only. |
| Prep time | 5 minutes |
Why this lesson looks the way it does¶
Lists are powerful, but brackets, commas, quotes, and indexes can overwhelm younger students. This lesson avoids indexes at first. Students loop directly through items, which reads naturally: for message in messages.
The differentiation stays consistent: Starters modify working code, Builders write from a template, and Extenders write from scratch or add features. MakeCode Arcade's Python/Blocks toggle remains the safety rail for students whose typing or syntax fluency is still developing.
CSTA 2026 standards¶
| Concept area | Connection |
|---|---|
| Algorithms & Design | Students plan, test, and revise small algorithms using this week's control structure. |
| Programming | Students read and write Python syntax for the week's concept in MakeCode Arcade. |
| Data & Analysis | Students store, compare, organize, or inspect values as evidence. |
| Systems & Security | Students use a no-install, no-account browser tool and test changes before trusting them. |
| Computing & Society | Students explain program behavior clearly to another person. |
"I can…" objectives¶
By the end of today, students can say:
- I can read this week's Python pattern in plain English.
- I can modify working starter code without breaking the whole program.
- I can test my change and explain the result.
- I can use Blocks view as a scaffold, then return to Python.
Teacher prep — the 5-minute version¶
- Open https://arcade.makecode.com and switch a new project to Python.
- Paste the mini-lesson code below and run it before class.
- Put Driver/Navigator pairs on the board; swap drivers at 0:24.
- Write the debugging routine: run first, change one thing, test again.
- Keep the Starter code visible for younger students to copy or remix.
Minute-by-minute run sheet¶
0:00–0:04 — Anchor¶
"Last Friday we used loops to repeat code. Today we add one new Python idea, but we keep the same rule: working code first, tiny changes, test every change."
0:04–0:12 — Mini-lesson¶
Run this, then point separately to the data and the algorithm.
messages = ["Ready", "Set", "Go"]
hero = sprites.create(img("""
. 3 3 .
3 3 3 3
. 3 3 .
"""), SpriteKind.player)
for message in messages:
hero.say_text(message)
pause(700)
"The list is the data. The loop is the algorithm. If I change the list, the same algorithm handles it."
"Do not try to memorize every symbol. Read the pattern. Ask: what is the name, what changes, and what lines belong together?"
0:12–0:36 — Paired build¶
"Driver, you type. Navigator, you read the code and predict what should happen. If you get stuck, flip to Blocks, translate the idea, then come back to Python."
Tiered challenges¶
🟢 Starter (grades 5–6): modify working starter code
Change the words in the list. Add one more word if you can.
messages = ["Hello", "Python", "Friends"]
hero = sprites.create(img("""
. 3 3 .
3 3 3 3
. 3 3 .
"""), SpriteKind.player)
for message in messages:
hero.say_text(message)
pause(700)
🟡 Builder (grades 7–8): write from a template
Use a list of numbers to move the sprite.
steps = [10, 30, 50, 70]
hero = sprites.create(img("""
. 6 6 .
6 6 6 6
. 6 6 .
"""), SpriteKind.player)
for step in steps:
hero.x = step
hero.say_text(str(step))
pause(500)
🔴 Extender (grades 9–10): write from scratch or add features
Create sprites from a list of x positions.
positions = [20, 45, 70, 95, 120]
for x in positions:
coin = sprites.create(img("""
. 5 5 .
5 5 5 5
. 5 5 .
"""), SpriteKind.food)
coin.set_position(x, 60)
Add a second list or a message for each item.
0:36–0:42 — Share-out¶
"Show us your list first. Then run it. What did the loop do for each item?"
0:42–0:45 — Teaser + prompt¶
"Next Friday we give a group of instructions its own name. That is a function."
🤔 Think About This¶
Notice a list this week: menu, roster, playlist, inventory. What would the list be named in code?
Share-out prompt¶
"Show us your list first. Then run it. What did the loop do for each item?"
🔌 Unplugged Plan B — if the internet is down¶
| Time | Activity |
|---|---|
| 0:00–0:04 | Same anchor: last week connection and today's one new idea. |
| 0:04–0:12 | Board model of the Python pattern using paper cards for names, values, punctuation, and indented lines. |
| 0:12–0:26 | Pairs trace a paper program. One student is the human interpreter; one student is the debugger. |
| 0:26–0:36 | Pairs modify one card, trade with another pair, and run the new paper program exactly. |
| 0:36–0:42 | Share one prediction, one result, 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 |
|---|---|---|
| Missing quote around a word | NameError: name 'Ready' is not defined |
Put strings in quotes: "Ready". |
| Missing comma | SyntaxError: invalid syntax. Perhaps you forgot a comma? |
Add commas between items. |
| Wrong brackets | no error |
Use square brackets for today's list pattern. |
| Loop variable misspelled | NameError: name 'mesage' is not defined |
Use the same spelling in the loop line and body. |
| Changing too much at once | confusing errors |
Restore starter, then change one item at a time. |
Vocabulary¶
- List — a collection of values under one name
- Item — one value inside a list
- Collection — a group of related data
- Loop variable — the name for the current item
- Index — a number position in a list, starting at 0
Reflection — fill in after class¶
- Which students needed the Blocks bridge most?
- Which syntax error appeared most often?
- Did Driver/Navigator roles reduce typing frustration?
- What should be reviewed in the first four minutes next week?
Next week: Week 23 — Functions — naming your own instructions