I've been volunteering with the "botball" program at my daughter's school. As near as I can tell, Botball originated right here in Norman, Oklahoma, and it's offered in the "gifted and talented" program starting in the first grade (which my daughter's in). So I've been working with first and second-graders to prepare for a friendly "challenge" in OKC next weekend.

As I've told anyone who'll listen, I was shocked—shocked!—to find that, once they'd gotten past the preliminaries (first a virtual robot game like the OP, then standalone bots with onboard UI's resembling repurposed TI-80's), the "real" programming takes place on a PC using a barebones IDE and a hot new language called C. In case you haven't heard of it (it's so hard to keep up these days), C is a language invented by Dennis Ritchie to help six-year-olds learn computers through interactive play.

And how do the kids spend their forty-minutes-a-week? They type some lines of C, then compile it to target the bot, which appears (thanks to a virtual COM port driver) as COM3 or COM4 or COM something, as long as the bot is plugged in over USB. Then they go to the bot, unplug it, and, after a sequence of menu selections on its wonky touch UI, which usually requires the assistance of a pencil eraser, they may "run" the program, at which point, all going well, the motors actuate.

At this point my listener is gone, so I'm just walking down the street ranting, "There's so much wrong with this!" I go on to complain about how it's "insane" that children should be subjected to a development experience that we know is abysmally inadequate for the grown-ups who practice it for a living! (cf Bret Victor)

This is the GT program: they had to score 97th percentile on a standardized math or verbal test just to qualify, and only six of them were invited to the botball team. They can focus as well as anyone their age. But consider what we're asking of them! A typical interchange devolves as follows:

0. Great, ready to see something happen? Yeah, me too!

1. Wait, so one more thing: because of reasons, you need to type a semicolon at the end of every statement...

2. Oh, a semicolon is a... it's like a colon except it has...

3. A colon is like... anyway it doesn't matter, you need a semicolon...

4. It's right there on the keyboard next to L... just type it

5. No, don't hold shift, that was only for the parentheses...

6. The parentheses were for the... arguments...

7. Okay, you're not in the right place, you need to move the cursor...

8. The cursor... do you see the blinking line on the screen?... look, right there, where I'm pointing...

9. Yeah, you need to click exactly right there... you know what just use the arrow keys...

10. The arrow keys are over on the right at the bottom... use the up arrow, the up arrow... that one...

11. Keep pressing it, keep pressing it... you have to go through the whitespace...

12. Whitespace is what we call the part of the program that's invisible, but it's there...

13. Oh no, out of time! See you next week, try not to forget about semicolons in the meantime! There are servos on this thing just awaiting your command!

Look, Dennis, I have nothing against your footgun—I learned it after BASIC when I was twelve like all the other kids and I turned out just fine. But, as Alan Kay said in a Q&A, "I hate to break it to you, but C is not a high-level language." [citation needed. I think it was at a Quaalcom event.]

And don't even get me started on the feedback loop, officer.

Anyway, thanks for posting this! One of the other parents asked me what her child could do at home to practice, and I'm looking for resources just like this!