This deck is a steering wheel for you, not a worksheet for Billy. Let him play, explain, demonstrate and wander. Use a prompt only when there is somewhere interesting to go.
Ask how something works before mentioning anything you noticed in the code.
If he gives a broad answer, get him to point at things on screen or in the code.
The six maps appear to introduce and then combine mechanics: basic movement, spikes, lock blocks, bullets and finally the Qwerty element.
“Did you plan that order, or did the levels just grow that way?”
movePlayers()y position“If you wanted jumping to feel smoother instead of moving one tile up, what would have to change?”
The important idea is state: isOn changes, and the game rebuilds which sprite types count as solid.
Finish a level while the locks are clear, then try the lock control in the next level. Ask whether the code's idea of isOn always matches what the game is actually doing.
dxThe code moves them, but does not appear to make them damage or kill the player. That may be unfinished, deliberate, or simply not noticed yet.
“Why does (goal).length work there?”
Don't explain it first. goal is the string "g", so its length happens to be 1. The condition can therefore work for a single Qwerty tile without actually counting Qwerty tiles.
Lovely accidental-success debugging question: the game can work while the reasoning underneath it is shaky.
Once Billy has given you the tour:
Add player/bullet collision and decide what a hit actually does.
Spike checking currently happens on the gravity timer, so a quick move may potentially escape between checks.
Keep isOn and the actual solids list synchronized when levels change.
Bullets currently treat lock tiles as barriers even when the player can pass through them.
Count Qwerty tiles instead of relying on the length of "g".
After Game Over, gameRunning is false, so the current J reset handler cannot run.
mapWidth and showQwertyText are declared but not used.
Use the bullet constant consistently instead of sometimes using "b" directly.
Then let him answer properly. No need to translate it into a learning outcome while he is sitting there.
Notice whether he chooses a technical problem, a design decision, an aesthetic detail, a joke/easter egg, or the fact that he worked something out independently. That tells you what this project meant to him.