In-class coaching Β· App Lab

Live Debugging Feedback

Screenshot a stuck student's App Lab code, paste it into your Claude chat, and coach them to find the bug themselves. Pick the situation below β€” the page gives you the right move and the exact prompt to send Claude.

πŸ›ˆTwo ways to use this: Analyze Screenshot reads a student's code right here (needs a one-time Anthropic API key). The other tabs are the no-setup playbook β€” the escalation ladder, question bank, and skill tracker you use while walking the room, plus copy-ready prompts if you'd rather coach in your own Claude chat.

Analyze a screenshot right here

πŸ”‘One-time setup: paste your Anthropic API key below. It's saved only in this browser and sent straight to Anthropic β€” never to me or any server. Get a key at console.anthropic.com; each analysis costs a few cents. Don't do this on a shared computer.
πŸ“Έ Click to choose a screenshot β€” or copy one (Win+Shift+S) and paste it here (Ctrl/⌘+V)

The feedback Claude gives you

πŸ‘€What I seeA neutral read β€” no blame, no answer.
❓Ask the student (in order)2–3 Socratic questions that walk them toward the bug.
πŸ‘‰If they're still stuckOne nudge toward the area β€” still not the fix.
πŸ› Debugging skill to name out loudThe transferable move they keep for next time.

Match the help to the student β€” escalation ladder

Give the least help that unsticks them. Move up a rung only if they're still stuck. Each rung has a prompt to send Claude.

Level 1 Β· NudgeUse when: capable, just needs a spark

Ask one question, then walk away.

Drop a single guiding question and give them space to think. Come back in 2 minutes.

"What did you expect that line to do β€” and what did it actually do?"
Prompt: one guiding question only.
Level 2 Β· HintUse when: engaged but circling

Point to the neighborhood.

Narrow where to look without naming the bug. Then let them search that area.

"Something in how the button and your code connect isn't matching up. Look there."
Prompt: point to the area + name the skill.
Level 3 Β· Peer / modelUse when: frustrated or social learner

Connect them to a peer, or model a parallel example.

Pair them with a student who just solved it, or think aloud through different code with the same bug so they transfer it.

"Let me show you a different program with the same kind of mix-up, then you spot yours."
Prompt: a parallel example to model.
Level 4 Β· Co-debugUse when: shutting down, or time is short

Debug it together β€” they keep their hands on the keyboard.

Walk the debugging process with them, one small step at a time. You ask, they type and test. Never take the keyboard.

"Okay, together. Step 1 β€” where do we think it breaks? Add a console.log right there. What prints?"
Prompt: step-by-step co-debug script.

The method to teach (say it every time)

🎯
ExpectWhat should happen?
πŸ‘
ObserveWhat actually happens?
πŸ“
LocateWhere could it break?
πŸ”¬
TestOne change / one log
πŸ”
RepeatCloser each time

Spot the bug half the room shares

When you see the same struggle over and over, stop chasing it one desk at a time β€” teach it once.

How

  1. Screenshot 3–6 stuck students' code (or the same App Lab level from each).
  2. Paste them into your Claude chat together.
  3. Claude finds the common bug or misconception and gives you a 60-second mini-lesson + one whole-class question.
  4. Pause the room, teach the pattern, send them back to fix their own.
Prompt: find the shared bug + whole-class mini-lesson.
Prompt: rank the top bugs to reteach first.
πŸ’‘After the mini-lesson, log the skill for each student in Skill Tracker so you can see next week whether it stuck.

App Lab bug β†’ questions to ask

Button does nothing when clicked

  • "How does the program know to run code when that button is clicked?"
  • "Does the id in onEvent match the button's id in Design β€” exactly?"
  • "Is the onEvent on the right screen?"
Skill: trace the event β€” id ↔ onEvent

Math is wrong / numbers sit side-by-side

  • "What does getText() return β€” number or text?"
  • "What does + do to two pieces of text?"
  • "Where could you wrap it in Number(...)?"
Skill: input is text β€” convert with Number()

Variable is wrong / undefined

  • "Where is it set vs used β€” which is first?"
  • "Put console.log(x) before the broken line. What prints?"
  • "Is it changing inside the function or only outside?"
Skill: trace a variable with console.log

Nothing runs / no response

  • "Is this function ever called? From where?"
  • "Red text in the debug console? Read the first line β€” what line #?"
  • "What's the very first thing you expect to happen?"
Skill: read the error first; check the call

Screen won't change

  • "What does setScreen() need inside the ( )?"
  • "Does that screen id match the real screen id?"
  • "Is the line that calls it actually running?"
Skill: ids must match; follow setScreen

Loop runs forever / freezes

  • "What makes this loop stop?"
  • "Does the condition ever become false?"
  • "What changes the counter inside the loop?"
Skill: every loop needs a way to end

if is always true / always false

  • "Is that = or ==? What's the difference?"
  • "What two values are compared there?"
  • "console.log both β€” the types you expect?"
Skill: == vs = ; inspect the values

Element is invisible / off-screen

  • "Which screen is it on β€” the one showing?"
  • "Are its x, y, width on the canvas?"
  • "Is something drawn on top of it?"
Skill: right screen + on-canvas

Drawing doesn't show (canvas)

  • "Is there a canvas on this screen?"
  • "Does your draw code run after the canvas exists?"
  • "Are the coordinates on the canvas β€” (0,0) is top-left?"
Skill: canvas first, then coordinates

Timer / animation not moving

  • "Is the timedLoop/setInterval actually started?"
  • "What does it call each tick β€” and does that update the screen?"
  • "Does anything ever stop it?"
Skill: a timer calls a function repeatedly

List / array issues

  • "What's the first index? What's the last valid one?"
  • "Is appendItem adding to the list you think?"
  • "What does list.length print right now?"
Skill: lists are 0-indexed; check length

Update doesn't show on screen

  • "Which id are you updating with setText/setProperty?"
  • "Is that the same id that's actually on the screen?"
  • "Does the update run after the value changes?"
Skill: update the id that's really there

Wrong event fires (or none)

  • "Which event do you want β€” click, change, or input?"
  • "A dropdown/text field changing uses which one?"
  • "Is the event type spelled exactly right?"
Skill: pick the right onEvent type

Can't read the input value

  • "How do you get what they typed/selected?"
  • "Is getText(id) using the input's id?"
  • "Is the value text β€” do you need a number?"
Skill: read input by id; mind the type

Sound / image won't play or show

  • "Is the asset actually in the Assets tab?"
  • "Does the filename in code match exactly?"
  • "Is the code that plays/shows it reached?"
Skill: asset name must match exactly

Function does the wrong thing

  • "Read the function name aloud β€” does it match what it does?"
  • "What goes in, what should come out?"
  • "console.log at the top and bottom β€” what changes?"
Skill: check inputs/outputs of the function

if compares text to a number

  • "Is getText giving you \"5\" (text) or 5 (number)?"
  • "Will \"5\" == 5 the way you expect?"
  • "Where could Number(...) go?"
Skill: compare the same types

Counter resets every time

  • "Where is the counter variable declared β€” inside the event or outside?"
  • "If it's re-made each click, what value does it start at?"
  • "Where should it live so it remembers?"
Skill: variable scope β€” declare once, outside

Event fires way too many times

  • "Is the onEvent inside a loop or another event?"
  • "How many times does that code run?"
  • "Should the handler be set once, at the start?"
Skill: attach each onEvent only once

Output goes to console, not the screen

  • "Does console.log show on the app, or in the debug console?"
  • "How do you put text on a screen element?"
  • "Which id should the text go to?"
Skill: console.log vs setText on screen

Random number out of range

  • "What min and max did you give randomNumber?"
  • "Is the top value included?"
  • "Log a few values β€” are they where you expect?"
Skill: check randomNumber(min, max) bounds

Checkbox / radio value not read

  • "How do you read whether it's checked β€” getChecked?"
  • "Are you using the right element id?"
  • "Is it true/false, not text?"
Skill: getChecked returns true/false

Dropdown selection is wrong

  • "How do you get the chosen option β€” getText(id)?"
  • "Does it match the option text exactly (caps, spaces)?"
  • "Log it β€” what does it actually say?"
Skill: read the dropdown by id, match exactly

Function returns nothing

  • "Does the function have a return?"
  • "What value comes back when you call it?"
  • "Is it printing instead of returning?"
Skill: return vs print

Two things share one variable name

  • "Is this name used for two different things?"
  • "Which value is in it right here?"
  • "Would a clearer name reveal the mix-up?"
Skill: one name, one job

Text invisible (same color as background)

  • "What color is the text vs the screen behind it?"
  • "Could they be the same?"
  • "Is the element actually on the active screen?"
Skill: check contrast + screen

Timer keeps running after screen change

  • "Did you stop the timedLoop when leaving the screen?"
  • "What does it keep doing in the background?"
  • "Where would you stop it?"
Skill: stop timers you no longer need

List index off by one

  • "What's the first index? What's list.length - 1?"
  • "Are you reaching one past the end?"
  • "Log the index right before it breaks."
Skill: last index is length βˆ’ 1

Adds the wrong item to a list

  • "Is it appendItem (end) or insertItem (a spot)?"
  • "Which one do you actually want?"
  • "Print the list after β€” is it what you expect?"
Skill: append vs insert

Log the debugging skill each student needed

Two seconds after you coach someone, log it. Over a week you'll see exactly which skills to reteach β€” and to whom. Saved in this browser.

Copied βœ“