
Kid's intro to programming: ideas? - steelhive
I've been extorted into introducing the neighbor's daughter (and possibly her slightly younger brother) to programming concepts this summer. She will be entering sixth grade (middle school) in the fall. I'm aware of a few possibilities which have educational materials:<p>- Storytelling Alice (Windows only, I'm Mac).<p>- Scratch, built on top of Squeak by folks at MIT (I'm currently leaning towards this).<p>- Squeak itself.<p>- Hackety Hack, for Ruby. (Currently Windows only, and apparently on hiatus. Looks really neat though).<p>Any other recommendations? Where's "A Young Lady's Illustrated Primer" when you need it?
======
astine
I learned to program around 5th grade (age nine) in Turbo Pascal. I found
writing command line oriented programs pretty easy and straightforward. It
wasn't hard to learn the concepts and write the code. If the girl is anything
like I was, I'd suggest teaching a basic scripting language, (Perl, Python) on
a CLI.

Personally, I'm against insulting a child's intelligence with a toy meant to
baby them. When I learned to program, I built practical things I could use.
When I hit toy languages, I got very frustrated by their limitedness.

~~~
Frocer
Another vote for Turbo Pascal! It was my first language as well and it really
set a foundation for me. It was easy to pick C/C++, Java, etc. afterwards.

I think the kids must have genuine interest of computers in order to learn
programming, or you have to somehow generate that interest. I picked up
programming in high school, and I thought it was fascinating because I was
already very familiar with computers. However, if I were to learn programming
in 6th grade when I know nothing about it... I think I would be both confused
and bored.

It may be a challenge for you if the kids aren't too familiar with computers
(I guess it's doubtful in this age...)

------
mechanical_fish
You scared me when you claimed that Hackety Hack is "on hiatus".

But, no, a look at <http://hackety.org/> suggests that _Why is just on one of
those epic hacker side-tracks, like Knuth went on when he took a decade-long
break to invent TeX. To make Hackety Hack work well cross-platform, _Why had
to invent a cross-platform Ruby-based toolkit for web-like apps (Shoes) and
he's still kind of polishing that. So I don't think Hackety Hack is dead, yet.
It may merely be cocooned, preparing to burst forth like Mothra and blow us
all away with hurricane force.

~~~
nertzy
"This project is currently on suspension while I work on Shoes. Expect a new
release, based on Shoes, some time before 2008's end."

from <http://code.whytheluckystiff.net/hacketyhack/>

Given the amount of work he's put into shoes, I think he will easily be able
to make this date.

------
mdakin
What about "The Little Schemer"? I remember thinking it would be a great book
to teach a smart little kid about computer science. Unfortunately I don't have
it with me right now (and won't anytime soon) so I can't confirm my memory. I
think it would take a lot of direct interaction with the kid; the book in one
hand, a Scheme interpreter running on the computer and a live coach to ask
good questions and explain. If done well this could be an amazing learning
experience for the right sort of gifted kid.

~~~
steelhive
The Little Schemer series of books might be my very favorite programming books
of all time. But even though they look like they're for kids, I think they
might be a bit too challenging. They even teach about the Y combinator. :-) I
do wish there were some nice scheme books for a younger audience though.

~~~
kylec
_They even teach about the Y combinator_

This is great news. In his essays, pg has repeatedly expressed interest in the
Y Combinator enabling younger people to start startups - why not 11 or 12 year
olds? They can grow their service functionality and user base after school,
present their software to investors on the weekends, pursue rounds of funding
during school vacations, and either IPO or get acquired by the time they
graduate high school. ;)

I jest, of course, but it's an interesting idea. Sort of a high-powered
lemonade stand for entrepreneur youth. With respect to the real Y combinator,
it may be a little challenging for those without a foothold in the field (such
as children) because if you don't know what recursion is it can be hard to see
what's so special about it.

------
bootload
_"... I've been extorted into introducing the neighbor's daughter (and
possibly her slightly younger brother) to programming concepts this summer ...
Any other recommendations? ..."_

Here's one that might be worth considering. Kids like to draw. So get them to
draw something on either paper then scan it or on the screen with a paint
program. Save the image(s) to either a .png or .jpg format.

    
    
      hand drawn images + browser + Processing.js
    

Then head over to <http://ejohn.org/blog/processingjs/> then check out the
sprite example ~
[http://ejohn.org/apps/processing.js/examples/basic/sprite.ht...](http://ejohn.org/apps/processing.js/examples/basic/sprite.html)

Forget python, squeak, ruby. Arc and lisp can wait. Think browser as your OS
and Processing as your language. The bonus of creating their own images then
given some bits of code to change the numbers. Let them fail a few times. Most
important is getting an immediate result.

This is probably the simplest environment that most kids are familiar with, a
browser. So use it. There are plenty of examples ~
<http://processing.org/learning/basics/> the system is FOSS and x-platform.
The example also allows them to create their own "Illustrated Primer" with
powerful tools yet still simple to use.

~~~
steelhive
Thanks for the suggestion. Some time ago I'd looked at Processing for my own
use. I hadn't even considered it as a platform for teaching. It would be
certainly be interesting to have a kid-oriented programming environment (like
that for Scratch) built on top of this.

------
doncampbell
Scratch is very cool. I've got young kids now and was introduced to computers
as a kids so I think its a great idea to learn through games. I blogged about
this on [http://kidconfidence.com/blogs/2007/05/28/learning-how-
compu...](http://kidconfidence.com/blogs/2007/05/28/learning-how-computers-
work-through-video-games/) saying HTML/JavaScript is a great way for kids to
start learning how to program. Also check out Chipwits.com for learning logic.
-Don

------
falsestprophet
Python: fortune favors the bold

------
hillel
I had a post on this same topic. Lots of good suggestions in the post...
especially if you want to start from the perspective of making video games.

[http://www.jacksonfish.com/blog/2007/08/28/programming-
for-k...](http://www.jacksonfish.com/blog/2007/08/28/programming-for-kids-and-
rolling-your-own-videogame/)

------
natch
You've been extorted? Well, pass the extortion right on down. Or, do what I
do, bribery.

Earn a bankroll of neopoints at neopets.com, and give them out as payment for
programming exercises completed. My daughter (nine) just earned 30,000
neopoints from me yesterday for doing three easy Python programming exercises
(where easy, starting out, means something like "cut and paste this and get it
to run, with help from Dad allowed" and then goes from there). How to earn
lots of neopoints? Neopian stocks, mostly.

Scratch is so good you can even use Scratch time as a reward, if you're mean
enough to do that.

For editing of Python, we're trying out Pico, which is like an Emacs lite,
with the main useful commands clearly shown at the bottom of the screen.

------
xirium
Teach Logo. It teaches geometry, block structure and subroutines. Kids get
instant graphical feedback. It also smoothes the beginning of the learning
curve because you can get interesting output without understanding loops or
variables.

------
andr
What about Lego Mindstorm?

------
Spyckie
I would say Storytelling Alice, but the scheduled release date for 3.0 is
summer of next year. I've used Alice 2.0 and am satisfied with the experience,
but the model library lacks if you're doing anything more than a nice
neighborhood scene...

I'd go with something that has a large quality graphics/model library. Its
good learning how to code, but its even better to feel proud of what you've
created, and having an application, movie, or game that looks nice and
polished is crucial for that feeling of accomplishment.

------
taylorbarstow
I wrote my first program in QBasic (!) Somehow I ended up with a floppy disk
which contained the game nibbles. I was playing around with the computer and
realized I could look at the source code. Then I started messing around; I
wrote a guitar tuner, and a quiz program.

Seems like the biggest hurdle will be getting them interested and thinking for
themselves (for example, if you ask them to write whatever kind of program
they want, how the heck are they going to know what's possible?)

------
dev_eddie
Do it right thing from the beginning. I was teached basic when I was a child,
and it crippled by brain for programming. I had to unlearn and forget loads of
crap. I say use python, because it is clean, multiplatform, multiparadigm, has
console (ie. immediate incentive to see if the thing is working and why),
powerful, and has batteries included.

Once you can use python, jumping to C++, C# or Java is not that hard.

------
stcredzero
Squeak eToys include a lot of nice goodies. You need to play around with them
enough to be able to guide them through to get the most out of them, however.
(This probably goes for anything mentioned as a suggestion, of course.)

If you want to make them really uber: From Nand to Tetris in 12 Steps!

<http://www.youtube.com/watch?v=JtXvUoPx4Qs>

All the courseware is open source.

------
jsa
I might consider taking this way:

“My 6 year old son is learning computer programming by first understanding the
mathematical foundations, then applying what he has learned using Haskell,
because it is short and natural (he doesn’t even know what Haskell is)”
<http://blog.tmorris.net/does-java-cause-self-delusion/>

------
mickt
I've no idea how old 6th grade is (didn't go to US highschool), but wouldn't
the OLPC, <http://laptop.org> , be ideal for a kid to learn programming? They
looks at the code of all the applications running on the OLPC and change them
on the fly.

~~~
astine
In the US, children usually enter 1st grade at age 6. She should be about 11
or 12.

------
ghiotion
What about HTML + javascript? Very visual with instant feedback. You get the
programming stuff with javascript (an under appreciated language) and
introduce the concept of a structured document with HTML. You can use firebug
as an intro to debuggers too.

~~~
tx
This will only teach them how ugly hacks were made, not how proper software
should be.

Even now, when we have strict HTML and CSS2 and some decent browsers, I still
get chills sometimes at how fugly this whole "web-development" is... These
"technologies" weren't meant to be what we use them for.

~~~
ghiotion
Yes, but the idea seems to be to introduce them to programming concepts:
variables, if/else, do/while, etc. The advantage of HTML and javascript is
that it's very easy to see how a button click causes some logic to execute. It
also shows them that programming can be done in a simple text editor using
only tools you already have at your disposal, by virtue of having nothing but
a computer.

~~~
tx
It's not. Not easy - have you done _anything_ else besides web development?
VB6 is a far better tool for what you are saying.

Just because 99% of people here dream of becoming .com-millionaires doesn't
automatically turn these fashionable "technologies" a best way to introduce a
kid to programming.

The absurdity of misused web "apps" for commercial purposes is one thing
(especially if you get paid at the end), but fucking up someone's education is
just cruel.

------
DTrejo
Check out <http://www.bfoit.org/itp/itp.html> They teach kids using Alice and
also jLogo. I've taken the jLogo class and that is how I became interested in
programming during high school.

------
tkosan
You might try the "Professor and Pat" programmer newbies books:

<http://professorandpat.org>

I have had students as young as 10 make it through the programming newbies
series of books on this site with a little help.

------
niels_olson
<blockquote>Where's "A Young Lady's Illustrated Primer"</blockquote> How to
the Think like a Computer Scientist is a pretty good primer for python.

------
LKM
\- Some HyperCard clone (very easy to learn concepts) \- JavaScript (runs
everywhere, easy to create simple things like games without much work)

------
xenoterracide
web programming, it's something they can see the results of right away and
prettier sooner. You must keep them interested, imho. on top of html/css show
them js and php/mysql perhaps even teaching them ajax (you can sub php/mysq
for preferred lang, db).

------
mynameishere
What about soldering irons and relays?

------
jdale27
SICP

~~~
dhotson
Haha.. I actually LOL'ed at that.

.. I hope you're not being serious.

------
Shooter
Scratch!

------
bwh2
What about ActionScript (Flash)?

