Skip to content

Week 18 — Hello, Python — your first typed program

At a glance

Date Friday, January 8, 2027
Unit 3 — From Blocks to Text
Big idea Text code is still the same ideas from blocks: ordered instructions, names, and feedback.
Goal Every student edits and runs a working Python program in MakeCode Arcade, using Blocks as the translation bridge when needed.
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

This is the first Friday after a three-week holiday gap, so the first job is re-entry. Do not assume students remember Unit 2 details, and do not open with a blank editor. Open a tiny working program, run it, then change one safe line.

MakeCode Arcade is the scaffold on purpose. A 10th grader can read real typed Python; a 5th grader can flip to Blocks and see the same idea as shapes. That is not cheating. It is the bridge from "I recognize this" to "I can type this."

The real target today is confidence: text code is picky, but it is not magic.


CSTA 2026 standards

Concept area Connection
Algorithms & Design Programs are ordered instructions that can be planned, tested, and revised
Programming Text languages use precise syntax to express familiar programming ideas
Data & Analysis Program output gives evidence that a code change worked
Systems & Security Browser-based tools let code run without installing software or creating accounts
Computing & Society Different interfaces lower barriers for different learners

"I can…" objectives

By the end of today, students can say:

  • I can run a Python program in MakeCode Arcade.
  • I can change a line of starter code and predict what will happen.
  • I can flip between Blocks and Python to understand the same program two ways.
  • I can explain why spelling, quotes, and parentheses matter in text code.

Teacher prep — the 5-minute version

  1. Open https://arcade.makecode.com on the projector.
  2. Create a new Arcade project and switch the editor to Python.
  3. Paste the Starter code from the challenge section so students can copy from one visible source.
  4. Write on the board:

    Today: Run it → Change it → Explain it
    Bridge rule: You may flip to Blocks any time it helps.

  5. Pair students Driver/Navigator. Older student navigates first; younger student drives first when possible.

Minute-by-minute run sheet

0:00–0:04 — Anchor

"Last Friday we met was before Christmas break. We finished Unit 2 by exploring AI and choosing coding activities. Today we come back to building. Same ideas from Unit 1 — sprites, events, variables — but now we are going to see them in typed Python."

"Important rule: flipping back to Blocks is allowed. Professionals use every helpful view they can get."


0:04–0:12 — Mini-lesson

Run the starter before explaining it.

player = sprites.create(img("""
    . . 5 5 . .
    . 5 5 5 5 .
    . . 5 5 . .
"""), SpriteKind.player)
player.say_text("Hello, Python!")

"Before we talk, let's prove the program works. Code should do something."

Point to three parts only: player is a name, sprites.create(...) makes the sprite, and player.say_text(...) makes it talk. Then change only the words inside the quotes.

"The safest first Python move is changing something inside quotes. The computer treats that as text, not as a command."

Flip briefly to Blocks and back.

"Same program, two views. If Python looks like a wall of symbols, use Blocks as the translation. Then come back."


0:12–0:36 — Paired build

Driver types; Navigator reads every character aloud when needed. Swap at 0:24.

"Your job is not to type a lot. Your job is to make a tiny program yours and explain one line of it."

Tiered challenges

🟢 Starter (grades 5–6): change working code

Start here. Change only the speech text and one color number in the image.

player = sprites.create(img("""
    . . 5 5 . .
    . 5 5 5 5 .
    . . 5 5 . .
"""), SpriteKind.player)
player.say_text("I made this!")

🟡 Builder (grades 7–8): use the template

Add a second line of speech after the first one.

player = sprites.create(img("""
    . . 2 2 . .
    . 2 2 2 2 .
    . . 2 2 . .
"""), SpriteKind.player)
player.say_text("Hello!")
pause(1000)
player.say_text("Python is picky.")

🔴 Extender (grades 9–10): write a tiny scene

Create two sprites and make each one speak.

hero = sprites.create(img("""
    . 7 7 .
    7 7 7 7
    . 7 7 .
"""), SpriteKind.player)
friend = sprites.create(img("""
    . 3 3 .
    3 3 3 3
    . 3 3 .
"""), SpriteKind.food)
hero.say_text("Hi!")
pause(1000)
friend.say_text("Welcome to Python.")

0:36–0:42 — Share-out

Pick one Starter, one Builder, and one Extender if possible. Ask for one line, not the whole project.

"Read one line of your code and tell us what you think it does. If you used Blocks to understand it, say that proudly."


0:42–0:45 — Teaser + prompt

"Next Friday we make programs that remember information and respond to input. Today your sprite talked. Next week, your program will talk back when the player does something."

🤔 Think About This

Notice one place this week where tiny punctuation changes meaning. A comma in a sentence, a decimal point in a price, a period in a web address. Python works that way too.


Share-out prompt

"What is one thing in Python that looked scary at first but made more sense after you ran it or flipped to Blocks?"


🔌 Unplugged Plan B — if the internet is down

Time Activity
0:00–0:04 Same re-entry anchor: "Last Friday before break… today we move from blocks to text."
0:04–0:12 Draw three block commands: create sprite, say "Hello," pause. Next to them, write matching text commands. Students identify what stayed the same.
0:12–0:26 Human interpreter. Pairs write commands like SAY "Hello", WAIT 2, MOVE 3. One student follows exactly.
0:26–0:36 Pairs modify one command, trade programs, and act them out literally.
0:36–0:42 Share one "the computer did exactly what we wrote" moment.
0:42–0:45 Same teaser and Think About This.

Common problems & fixes

Problem What students may see Fix
Missing closing quote SyntaxError: unterminated string literal Check that speech text has a quote at the beginning and end.
Missing parenthesis SyntaxError: '(' was never closed Count opening and closing parentheses with a finger.
Typing Spritekind instead of SpriteKind NameError: name 'Spritekind' is not defined Python names are case-sensitive. Capital K matters.
Deleting indentation inside the image Image looks wrong or code will not parse Put the image back from starter code; Starters edit numbers, not triple quotes.
Student freezes at typing No error — just stuck Let the partner read characters aloud; allow copy/paste from the projected starter.

Vocabulary

  • Python — a text programming language used by beginners and professionals
  • Syntax — the exact spelling and punctuation rules of a language
  • String — text inside quotes
  • Sprite — a character or object in an Arcade game
  • Run — tell the computer to try the program

Reflection — fill in after class

  • Who needed Blocks as the bridge most often?
  • Who typed comfortably enough to be a future Navigator for younger students?
  • Did the holiday re-entry feel rushed or calm?
  • Which syntax error appeared most often?

Next week: Week 19 — Variables & input — programs that talk back