
Show HN: Robotopia – Introducing kids to coding with tiny virtual robots - pguth
https://github.com/robotopia-x/robotopia/
======
metricodus
This thing made me think of the japanese-language-only, Sega Dreamcast-only
1999 "Marionette Handler" mech programming game.

[https://www.youtube.com/watch?v=CQqcvhR568E](https://www.youtube.com/watch?v=CQqcvhR568E)

It was something else, at least back then. (I do remember thinking it would be
really hard to play without having someone understanding at least basic
japanese around.)

The programming screen is shown briefly here:

[https://www.youtube.com/watch?v=CQqcvhR568E&t=188](https://www.youtube.com/watch?v=CQqcvhR568E&t=188)

I found this video from this web page, where there's more text and images:
(Chrome with Google Translate works okayish.)

[http://sesesega.blog90.fc2.com/blog-
entry-940.html](http://sesesega.blog90.fc2.com/blog-entry-940.html)

------
robotresearcher
See also the very slick Minecraft-based Blockly game from Microsoft. It's
similar and pretty good.

[https://code.org/minecraft](https://code.org/minecraft)

------
dschep
Very cool. The code editor looks a lot like scratch[0] but I can't find any
references to it. Does it use scratch or was scratch an inspiration?

[0] [https://scratch.mit.edu/](https://scratch.mit.edu/)

~~~
timgrossmann
It's called Blockly. Google developed it, it's open source and free to use for
everybody!

~~~
mcphage
How are Blockly and Scratch related?

------
kk_cz
hmmm, programmable virtual robot - I think I've seen that one before :)

[https://en.wikipedia.org/wiki/Karel_(programming_language)](https://en.wikipedia.org/wiki/Karel_\(programming_language\))

[http://karel.cloudmakers.eu/](http://karel.cloudmakers.eu/)

------
gavinpc
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!

~~~
maweki
I teach robotics courses and we also prefer blockly based languages for our
projects aimed at kids. I don't understand people that think "real
programming" needs one fighting with syntax when the semantics are hard enough
for the untrained. And a visual programming language the syntax is usually
either obvious or impossible to get wrong.

We're using the OpenRoberta Lab, which supports actual robots as well as
simulation.

------
mattfrommars
I honestly don't understand what is the motive behind teaching young kids to
code? The passion for computer science develops on it's own. Some kids like
computers while other can't be bother with it and are more interested in other
fields.

~~~
anothercomment
How can interest in computers develop if you are never exposed to it? I don't
think the "interest develops on it's own" theory is true, not for any subject.

~~~
corysama
In my observation, there is a ton of survivorship bias in attitudes about STEM
education.

"I had some quirk in my history that motivated me to slog through years of
seemingly meaningless crap to get to where I am today. It worked out great for
me! Now I can't imagine any other path actually working for anybody else."

~~~
anothercomment
The kids don't have to become professional Software Developers just because
they learn a bit of programming. I let my kids draw, too, and don't expect
them to become professional artists.

I think I know what you are getting at, there certainly seems to be the bias
of Software Development being the best profession in the world.

But with STEM in general, what I personally care about is teach my kids
rational and logical thinking, and of course the ability to build things.
Occasionally I ponder dong a sewing course together with my kids, and I might
one day. It's nice to have skills that you can build things with. But it is
hard to beat the possibilities you have with programming.

Besides, it is a skill that could come in handy in many other professions, as
well as a fallback line. Also, it is unfortunately the only thing I am good
at, so what else am I supposed to teach my kids?

------
Hydraulix989
How well did the competitions go? Did the kids like them? Were the programs
complex enough to make things "interesting"?

How much time in the class did you spend working on the competitions vs just
doing rote exercises?

~~~
pguth
We did two classes with about 20 students each. In both our offered courses we
had balanced proportions of gender. Age ranged between 16 and 20 years.

We did a questionnaire at the end and got pretty good feedback! About every
student enjoyed having been there. A couple of students said that they would
have liked to get to know more about the internals of the game and also about
how to program in general. We also raised interest in our course of studies.

~~~
willyyr
Do you think this could be used with kids at the age of 7-12 as well or will
it be to complex?

~~~
pguth
That was the age group we originally had in mind. We guessed that it would
work out fine :)

------
partycoder
Robocode back in the day was fun.

You have programmable tanks that had could move, scan with a radar and shoot.
You had to create the behavior for them in Java.

------
komali2
> Blockly - Drag and Drop

Should it be "move the robot to the chest" or something instead of "the metal
block?"

~~~
komali2
Also, it's really difficult to pull just _one_ code block out if it has others
below it. I can't figure out how to separate the ones below, which means if I
mess up and need to get a code block at the top out, I've got a lot of
rearranging to do.

Cool app though.

~~~
pbhjpbhj
Usually in blockly you grab the one below the one you want, it's sticky with
all the blocks below it. Then grab the block you want and drag off, then stick
the whole thing back together.

------
Animats
LOGO, the next generation?

~~~
cr0sh
IMHO - more like LOGO, re-done poorly.

Hey, nothing against the author's creation, but I do often wonder why we keep
re-inventing something that Seymour Papert figured out a long, long time ago -
and gave us the tools to do it with!

Furthermore - if you read his book (Mindstorms) - the goal isn't to "learn
programming" \- it's to learn to think computationally, something which can be
applied to all areas of learning and life. Furthermore, it's done by
manipulating a virtual artifact (the turtle) to create further artifacts -
artifacts which can be interactive.

Part of me tends to wonder if this "shoehorning" of education into nice little
"holes" (much like rote memorization) isn't more an effort to stifle kids
natural urge to creativity, questioning, and ultimately skepticism?

How dare we foster an education that could lead to progressive liberalism and
an unfettered mind...unthinkable!

~~~
ux-app
>more like LOGO, re-done poorly.

Each tool serves it's purpose. Currently i'm teaching programming to year
8,9,10 students. We use Logo, Scratch, JS (Khan Academy) and some game dev
using unity3D

Each tool has it's place and sometimes it's not about the age, but the
predisposition of the cohort. E.g. Logo isn;t usually a year 9 starter
language (it's usually used for younger kids), but with one particular group
of 9s it was the right starting point, so as an educator I say, the more tools
we have the better :)

