Teaching my kids to program

Don Box's Spoutlet

Syndication

One of my motivations for wanting to learn Ruby (or relearn Smalltalk) was for my kids.
 
In my household, my wife owns the liberal arts upbringing of the kids (she's ABD in English Lit), and I own the math and logic upbringing (my BA was in math and my first pass at grad school was in math before I decided to "go commercial" and do this CS thing).
 
I have no intention of having any of my kids grow up to program for a living - this is just about making them more complete human beings. To that end, I want my kids to have sound intuition on things like logic, predicates, sets, and functions, including how they manifest in computers. 
 
So, back to the question of which language to teach my kids.
 
Here's where my head is at this weekend.
 
Lisp
 
Pro: Minimum of syntactic mechanism.
Pro: I know it and feel comfortable with it.
Pro: Good synergy with what their daddy does for a living (remember the S-expr/XML relationship).
Pro: Instills the DIY ethic, which I'm a big believer in.
 
Con: I refuse to inflict Emacs on my kids, so I'm clueless as to what environment to use.
Con: Probably the least "practical" in terms of getting the kids to do stuff that might interest them. This may just be my limited imagination speaking.
 
ML
 
Pro: More structure than Lisp
Pro: I know it and feel comfortable with it.
Pro: I can use F# which fits nicely with my CLR-based home computing environment.
 
Con: Somewhat more syntax to get distract them from the semantics.
 
Smalltalk
 
Pro: Minimum of syntactic mechanism.
Pro: Good synergy with what their daddy does for a living (remember the messaging/SOAP relationship).
Pro: Instills the DIY ethic, which I'm a big believer in.
Pro: Doug Purdy works in Smalltalk and my kids love Doug.
Pro: The environment is obvious - Squeak.
 
Con: I'm super rusty - it's been 18 years since I've written a Smalltalk program. 
 
Ruby
 
Pro: The environment is obvious - RIDE.
Pro: Of the four on this list, it's the language that has the most momentum and community growth.
Pro: Given that I haven't written any Ruby programs yet, there may be tons of amazing pros I don't know of yet.
 
Con: Given that I haven't written any Ruby programs yet, there may be tons of hideous cons I don't know of yet.
 
There are some conspicuous absences from this list. I don't care if any of my three kids ever grok the difference between an abstract class and an interface or between a pointer and a reference, so languages like C++, C#, Java, and VB.NET are out. Honestly, if the industry is still forcing programmers to ask these kinds of questions by the time the next generation of programmers comes to the table, I'll consider my generation to have really squandered an opportunity.
 
My plan is to learn Ruby and relearn Smalltalk to inform my decision. In the meantime, comments or flames (public or private) from the Peanut Gallery are most appreciated.

Posted Feb 20 2005, 03:38 PM by don-box

Comments

Gideon wrote re: Teaching my kids to program
on 02-20-2005 10:51 AM
Maybe <a href="http://drscheme.org">DrScheme</a> would be a good lisp to begin with. It has some really neat features and is designed around <a href="http://www.htdp.org/">teaching</a> programming theory.
Maxim V. Karpov wrote re: Teaching my kids to program
on 02-20-2005 11:26 AM
Don,

I am interested in what your selection will ended up to be. I have two kids myself and I will start introducing them to programming when they are around 10 or so.

What are ages of your kids?

Maxim
[www.ipattern.com do you?]
TommyS wrote re: Teaching my kids to program
on 02-20-2005 11:29 AM
How old are your kids, or rather, at what age do you plan to introduce them to programming?
Have you considered something like Lego Mindstorms? (I think Stan Lippman have been using that with his son...)
/Tommy
David Cornelson wrote re: Teaching my kids to program
on 02-20-2005 11:31 AM
Try an interactive fiction language like TADS 3, Hugo, or Inform. The can teach programming concepts _and_ your kids can create interactive stories or games that your wife can also be involved in.

Places to start include www.wurb.com/if and ifwiki.org as well as the IF archive at ifarchive.org.
John wrote re: Teaching my kids to program
on 02-20-2005 11:50 AM
Do Ruby.

...and post the lessons! ;)
stefan demetz wrote re: Teaching my kids to program
on 02-20-2005 12:03 PM
html or xaml, so they get instant visual feedback on what they do
Martin wrote re: Teaching my kids to program
on 02-20-2005 12:09 PM
My formal education in programming was at Berkeley where Scheme is the first thing they throw at students. I think that approach is flawed. I took their class that used Scheme (61a) and I felt like it was useless and overly broad on theory while lacking anything concrete.

Here is my suggestion: choose the language that will let them do whatever they might think is cool. Make it fun and then help them intuit the theory on their own as they go. If you think they would enjoy building webpages, choose PHP or ASP or zope or some ruby framework. If you think they'll like building UI's maybe throw vb6 at them. I learned VB6 at the same time I took that Scheme class and learned way more from VB6. Ok, I realize you don't want them to be programmers. But I think getting them inspired will help burn the lessons in their memory and provide a reason for the theory. First give them a reason to want to know what you have to teach them.

I have no kids of my own, but I plan to use this strategy on them.
Steve Maine wrote re: Teaching my kids to program
on 02-20-2005 12:11 PM
+1 to Dr. Scheme. The environment is really friendly and geared toward teaching. It also comes with some interesting GUI libraries for doing more "tangible" things like drawing pictures on the screen.
Albert wrote re: Teaching my kids to program
on 02-20-2005 12:16 PM
I admire your optimism about current mainstream programming concepts being things of the past in 20 years. I'm not sure what sort of historic evidence supports this optimism but I suppose we, parents are obliged to hope for a better future for our kids.
David wrote re: Teaching my kids to program
on 02-20-2005 1:01 PM
Regardless of the final language choice, consider starting off with the red/green/refactor cycle. I've found that TDD actually helps kids a lot when picking up programming. This is probably at least partially due to the fact that it breaks things down into tiny steps, and gives you concrete (small) goals to shoot for from the start.
Hank Fay wrote re: Teaching my kids to program
on 02-20-2005 1:09 PM
There has been serious work done on teaching Python to young people, including <a href="http://www.livewires.org.uk/python/index.html">the Livewires program in the UK</a>.
Richard Tallent wrote re: Teaching my kids to program
on 02-20-2005 1:12 PM
Novel approach: I'll probably be laughed out of the room of LISPies, but perhaps Excel formula language would be a nice introduction to functions, data types, etc. Certainly a more graphical canvas than. Arrays != sets, but it may be more approachable depending on their age and level of interest, and they'll get a useful skill to boot.
Olivier Nano wrote re: Teaching my kids to program
on 02-20-2005 1:37 PM
If you go for Smalltalk, you should look there: http://www.iam.unibe.ch/~ducasse/ . He is a friend of mine who is writing a book to teach programming to kids in Smalltalk (look for Bot-Inc in the web page).
You should look also at squeak (made by Alan Kay) which is a Smalltalk environment very suitable for kids.

And relearning Smalltalk is fast, the syntax feets on a postcard ;-)
Dan Hatfield wrote re: Teaching my kids to program
on 02-20-2005 1:38 PM
In the Squeak realm, have you considered Alice?
http://www.alice.org/stage3/sqalice.html
My kids are too young yet - but I think they would find this cool. Although, it might not teach some of the basics you are looking for...
Vatsan wrote re: Teaching my kids to program
on 02-20-2005 2:26 PM
I'm surprised no one has mentioned Basic (GWBASIC of Basica) or (Turbo?) Pascal! Basic esp. is cool because it gives immediate feedback and is simple to learn (10 print "hello world? is all you need to start) - and yet, it can do some pretty amazing stuff.
Christian Romney wrote re: Teaching my kids to program
on 02-20-2005 2:37 PM
+1 for BASIC. Depending on the age of your kids, the sophistication of producing a GUI app may not be necessary. I wrote my first program at 7 years old on my Radio Shack TRS-80 with Basic, and even though it only printed my name, it was enough to spark my love affair with computing. The nice thing about line numbers (10.. 20.. 30..) is that you can always go back and add 15 if you need to! Of course, these days kids have "toys" that are 16-bit color handheld, interactive 3D gaming environents, so if you're kids are older, then Hello, World. might not do the trick to spark their interest. Let us know what you choose!
Kevin Daly wrote re: Teaching my kids to program
on 02-20-2005 2:40 PM
Are Logo implementations available for Windows?
That was a Lisp-based (I think...could be completely wrong about that) language explicitly designed to teach kids programming ideas. To make it more interesting the programs guide the movements of a virtual (or actual) "turtle", so they can see graphical output reflecting their coding logic.
Brian wrote re: Teaching my kids to program
on 02-20-2005 3:48 PM
I learned to program using QBASIC. I think that for the type of programs that a kid would be interested in writing (drawing, guessing games, etc.), QBASIC is the way to go.
Joe Duffy wrote re: Teaching my kids to program
on 02-20-2005 5:57 PM
+1 DrScheme

As already noted, the environment's primary case is for *teaching* students to program in Scheme.
David wrote re: Teaching my kids to program
on 02-20-2005 6:04 PM
Re: LOGO. Also a good choice...turtle graphics are fun! For a starting point, check out http://www.softronix.com/logo.html
Don Box wrote re: Teaching my kids to program
on 02-20-2005 6:58 PM
After spending some time today on this, here's where I'm at:

1. After reading the Pickaxe book, I love Ruby, at least for my own use.

2. After spending time in Squeak, I can't imagine inflicting an idiosyncratic windowing system on my kids in order to get them to use Smalltalk. I'm not writing off Smalltalk, but I am writing off Squeak. Sorry Doug.

3. DrScheme utterly rocks. Plus the idea of using Sussman/Abelson as inspiration ain't half bad either.

DB
Joshua Allen wrote re: Teaching my kids to program
on 02-20-2005 6:58 PM
Lisp, without a doubt. It's less about teaching them to program than about teaching them to think. As an early teen, I read Copi's "Symbolic Logic" (not at all related to programming) and learned Lisp, then was forced to learn to accomplish business tasks in Lisp for my summer job. I think that a ton of areas of the brain rely on wetware that handles tree/grammar/structure processing. Programming in Lisp really exercises these areas of the brain. A certain amount of programming in Lisp will have your kids improving in all sorts of areas of thinking; crafting logically sound arguments, stringing together conjunctions in speech like a German professor, and just "getting" complex things that other kids need explained five times.
Don Box wrote re: Teaching my kids to program
on 02-20-2005 7:03 PM
Joshua,

I too was exposed to Irv Copi's book as a youngster (9th grade Logic course) and then again as an undergrad.

I recently pulled out a copy from the garage and was surprised at how it no longer really spoke to me.

I did recently pick up John Sowa's KR book, which I loved. Sowa covers a lot of Copi's ground in much less time.

DB
Erik Johnson wrote re: Teaching my kids to program
on 02-20-2005 7:17 PM
This may seem unimaginative and maybe dangerous on a few levels, but my 7 year old is into Excel on our eMac at home. He gets the syntax and the values in boxes. He likes making times tables and all things "fill down/right". He likes the charts too.

The only problem is in trying to shield him from Powerpoint from as long as possible.
Joshua Allen wrote re: Teaching my kids to program
on 02-20-2005 7:48 PM
Well, that explains why you think the way you do -- Copi's book had pretty limited scope, but it was good for forming young brains. I also have Sowa's book and agree that it's much more valuable to me today than Copi. Sowa covers a lot more about application and tradeoffs, which might be more interesting to experienced practicioners than to Junior High kids, though. I would also recommend Sister Miriam Joseph's "Trivium" -- I only recently discovered it based on recommendation from Sowa, but it's meant to be grammar school text. I wish they had taught it at my school. Somewhat related; last week I picked up a copy of the game "Grid Works" at Borders, and I think it would be really good for kids around 8 years old. It's a nice travel-sized collection of logical deduction puzzles you solve by placing pieces on a magnetized grid. It's easy to learn, fun, and difficulty increases gradually so you can stretch your brain's stack a bit at a time. I can solve the hardest ones without too much difficulty, so it's not worth it for adults -- but I hope my daughter picks it up when the time comes, and I'll write a computer program to generate harder puzzles for the game if I ever get some spare time.
Lu wrote re: Teaching my kids to program
on 02-20-2005 8:35 PM
+1 for Lisp
Lisp is very useful for solving puzzles. A lot of AI text books have Lisp packages. I wish I could have learned AI (esp. search and logic) when I was a child. It provides a systematic way to solve neally all the intellectual puzzles that I had as a child. Lisp will be a very good aid in this problem solving process.
David.Mitchell@gmail.com wrote Take a look at Squeakland
on 02-20-2005 9:35 PM
For a Squeak set up for education, go to Squeakland.org.

Great book available ($20) with lesson plan. I'm using it with a group of 8-10 year olds.

I noted your concern about forcing a strange UI. I agree that Morphic (the Squeak UI) Squeak is a bit of a freakshow, but it's outstanding for kids. Everything is implemented in Squeak and it is all live all the time (For example, you can tear things off of the menus, twist them around and they still work.)

The kids in the group and I have spent about 3 hours across two evenings a week apart. Following the lesson plan, we've already drawn cars, planes, hovercraft and taught them to steer down paths by sensing colors. Drawn steering wheels and connected one object to another.

But, Ruby and LISP are cool as well. If you go the LISP route, check out DrScheme.
Peter Seibel wrote re: Teaching my kids to program
on 02-20-2005 10:08 PM
Since you listed not "practical" as a strike against Lisp, I'm pretty much obligated to flog my book (to be published this April by Apress) _Practical Common Lisp_, available (currently in draft form) on the web at:

http://www.gigamonkeys.com/book/

My book isn't aimed at kids, but maybe there's something in there to get you over the "not practical enough" hump. Or maybe not, it's hard to compete with something like Squeak in the appealing to kids arena.

Though with not much work on your part you could probably whip up some bindings to the appropriate kid-friendly libraries on a specific platform and then focus on teaching programming. For instance, using OpenMCL, a free Common Lisp implementation for OS X, I wrote an ear training program using Quicktime libraries to play notes and chords in all kinds of instruments. But after I wrapped a few C functions I needed, the rest of the program was pure Lisp.

-Peter
Ed Daniel wrote re: Teaching my kids to program
on 02-20-2005 11:44 PM
Hmm,

I just spent 20 minutes trying to find a link to a programming language created in the '80s that was a macro language for a drawing program (I think) for 8 bit BBC computers.

The idea being that visual result sets would stimulate more than a tabular dataset.

Other thoughts I had on this were that perhaps it would be more fun to 'build' physical things - so creating logic gates might be a fundamental lesson, i.e. start with binary ideas, and slowly scale up and out - before you know it you'll have a new alarm and intrusion detection system for your home, lol :-)

Chad Walker wrote re: Teaching my kids to program
on 02-20-2005 11:52 PM
I have often lamented that lack of progress in educational programming software. Growing up, we learned Logo (and later LogoWriter) in elementary school. The thing is, with a little practice we were able to create games that were about one generation behind consoles of the era (then the NES and Sega Master System). This is really what I think drove me and some friends to learn more. Later in life, I realized the valuable gift that LogoWrite gave to me, from the mundane concepts of variables to recursion to asynchronous event handling to pointer manipulation. The beauty being that it was all there from the begining, but you didn't need to know about it until you were ready to use it. It provided clear steps to acheivment, and motivation that I like current programs/platforms lack.

I have some time until my daughter is old enough to start learning some programic concepts (she's almost 11 months old), but I continue to worry about how to teach and motivate her.
Sriram wrote re: Teaching my kids to program
on 02-21-2005 12:00 AM
Why not Python? I think it would be the easiest to learn without the quirks of all the other languages. It probably looks the closest to English.

Also, for kids starting off, BASIC might be good too (don't kill me - its just that Basic is so close to English)

Think about this - if things go wrong,your kids are less likely to get scared away from Python than the others
Sriram wrote re: Teaching my kids to program
on 02-21-2005 12:03 AM
I don't know about kids - but when I started to code, I wanted to see *visual output*. I wanted to make those same programs that are there in Windows. So +1 for something with an easy GUI toolkit..and preferably visual designer. VB.NET anyone? :)
Ed Daniel wrote re: Teaching my kids to program
on 02-21-2005 12:44 AM
Lego is lots of fun too!

http://shop.lego.com/product.asp?p=3804
Tombo wrote re: Teaching my kids to program
on 02-21-2005 1:02 AM
+1 For Python and Sriram's arguments. Python is often likened to "executable psudocode". Must admit I don't know Ruby so I'll make no arguments against it.

For an excellent comparison of Python and Lisp, undertaken to support Norvig's own teaching aims and including the conclusion "Python is Lisp-1", see Peter Norvig's site:

http://www.norvig.com/python-lisp.html

You'll probably find his arguments more convincing than mine as he has a much larger brain.
AMD wrote re: Teaching my kids to program
on 02-21-2005 1:50 AM
Structured code is the blue pill.
Prolog is the red pill.
Free their minds!
Marco Russo wrote I linguaggi per le prossime generazioni
on 02-21-2005 2:08 AM
Random Thoughts wrote What Language To Teach A Child
on 02-21-2005 2:16 AM
That'd be programming language, not verbal. Talk about a confluence of ideas! I'd been thinking about this on and off for a while since Julian was born and up pops a post by Joshua Allen talking about a post by...
Scienter-Online wrote re: Teaching my kids to program
on 02-21-2005 2:54 AM
Above all, learning should be interesting and rewarding to children.

I was motivated to write programs as a child, mainly because I wanted to write cool games (and my brother was a good tutor). Does LISP give kids freedom to create exciting games for themselves?

Good children should learn C#. It is a "clean" language, very powerful/functional, and it provides quick and satisfying visual feedback. C# gives a kid power over the computer, i.e. instant gratification. In contrast, LISP is the relic of a bygone era.

If you doubt me, you should make this decision by casting lots.
Fernando Rodriguez wrote re: Teaching my kids to program
on 02-21-2005 2:54 AM
If you're going to teach kids, then by all menas, do not discard 'The Schemer's Guide' (see http://www.schemers.com/tsg.html). It's a WONDERFUL book to teach comp. science to kids. I strongly recommend it.

This is the article that made me discover that book and scheme, it's well worth reading for someone in your situation: http://www.fernando-rodriguez.com/high-school-computing.html

It might also be worth checking out the 'Computer science unplugged' project:
http://unplugged.canterbury.ac.nz/

Last, but not least, there's the 'manipulables' concept in 'Concrete Abstractions'. Another great book to teach programming, unfortunately it's now off print.

Good luck! :-)
Krishna wrote re: Teaching my kids to program
on 02-21-2005 2:59 AM
Checkout factor - http://factor.sf.net . It combines features from Lisp and Forth. If the kids can bend their minds backward (yeah, it uses postfix notation) at an early age, they can do pretty much anything ;)
Mark A. Richman wrote re: Teaching my kids to program
on 02-21-2005 3:17 AM
I had lots of fun with Logo (http://mckoss.com/logo/) programming as a little kid. Something about that cute little turtle...
Paul Downey wrote re: Teaching my kids to program
on 02-21-2005 3:50 AM
wow, what a lot of comments! i've been teaching my kids Python. It has the immediate interpreted aspects of BASIC, a minimal syntax with more depth and potential. There's also a larger developer base than with Ruby, including a bunch of games written in Python for them to copy and corrupt: http://www.pygame.org/
Michael wrote re: Teaching my kids to program
on 02-21-2005 4:27 AM
Wow, you have kids? I thought you did computer stuf 24x7...
Luís wrote re: Teaching my kids to program
on 02-21-2005 5:15 AM
I believe that you are making one major fatal mistake.
I totally agree that pointers are a thing of the past and that they cause more harm than good, but they are excential to understand computing.
Good understanding of pointers have saved me in a lot of times. Pointers as a concept cannot be avoided.
Chears
Darrell wrote re: Teaching my kids to program
on 02-21-2005 5:52 AM
Hey Don,

I really suggest that you use <insert my favorite language here> for <various reasons>!

Good luck,
Darrell
doug ransom wrote re: Teaching my kids to program
on 02-21-2005 6:16 AM
One major language to consider:
Haskell .

RobMiles wrote re: Teaching my kids to program
on 02-21-2005 6:32 AM
If you are not teachng them to program in a "grow up to be a programmer" way but you want to teach them valuable computer stuff why not show them how to get what they want from a Google search string? Plenty of logic and predicates there I reckon.... Oh, and Lego Mindstorms is great fun.
klaus wrote re: Teaching my kids to program
on 02-21-2005 6:48 AM
Yeah, you should really teach them Common Lisp. That might disgust them so much that they study something useful, such as Law, or Medicine.
Marco Russo wrote I linguaggi per le prossime generazioni
on 02-21-2005 6:50 AM
J.Marsch wrote re: Teaching my kids to program
on 02-21-2005 8:43 AM
What goals to you have in mind for making them more complete? I'm just thinking that if you could enumerate more precisely what the teaching goals are, it might help to drive your decision.

Do you want to teach them logic/abstract thought, or are you looking to teach them how technology will shape their lives, or is the interest more practical -- how to best use todays technology to succeed in school?

It might be interesting to spend time with more than one of the langauges that you have discussed. Skimming the comments, it sounds as thought the primary goal is to teach your children logical problem solving. I don't know very much about the languages that have been discussed so far, so I don't have much input there.

If you want to teach them something practical (that is, something they might use while in school), you might actually consider VB Script.

Now before the cannons come out, VB script isn't on my list of favorite languages, but think of how many end-user applications use VB or vb-like syntax as their internal macro language. Depending upon your children's age, they might derive immediate value by being able to write some kind of excel macro for some assignments (lab assignments and such)

I suggest VB Script because it seems to be more usefull to a non-programmer from a practical use standpoint. Whether it is a good for your tutoring children depends upon your teaching goals.


BTW. I'm curious: Why do you say that you do not want your children to become programmers? Is it because you want them to grow up choosing their own path and not under your shadow, or is it because you do not see a future for developers in the United States?
a wrote re: Teaching my kids to program
on 02-21-2005 11:47 AM
I do research in this area. Let me tell you, what language to use isn't the most important decision (but by god don't force lisp on them). It's how you teach them that matters. They aren't college kids. They aren't programmers. They aren't doing it for a living. You need to show them fun, real-world practical (or game-based) uses for developing applications. Don't teach them programming. Teach them how to build cool/useful applications and/or websites. Look up problem-based learning (PBL), for example.

My father introduced me to BASIC when I was young. BASIC as a language was designed with beginners in mind. He showed me how to make a program that paints a U.S. flag on the screen. It was the most boring activity (especially when my ColecoVision was lying nearby on the floor). I never liked computers. It wasn't until just before I graduated that I got into programming and development more when Hypercard and the web were new. I could instantly see the applications. So you see even though I was first introduced with an easy to use language (BASIC), the activity itself wasn't so effective.
David Totzke wrote re: Teaching my kids to program
on 02-21-2005 11:56 AM
Err....Turing? Seems the obvious choice. Can't believe nobody has even mentioned it yet.

Pierre Arnaud wrote re: Teaching my kids to program
on 02-21-2005 12:08 PM
Well, why not learn a language near to JAVA or C# or whatever you call it, by programming simulated 3D robots. It can be real fun.

A friend of mine developed this product called CEEBOT and I find it amazing:

http://www.ceebot.com/ceebot/family-e.php

Hope this gives you a few more ideas...

Pierre
Greg wrote re: Teaching my kids to program
on 02-21-2005 12:19 PM
How about Java? Check this out:

http://www.smartdataprocessing.com/java4kids.htm
Steve Downey wrote re: Teaching my kids to program
on 02-21-2005 1:31 PM
If you're considering LISP you really ought to take a look at Haskell. A pure functional language, with an emaphasis on lazy evaluation. For understanding lambda abstractions, the syntax is a lot cleaner and more regular than LISP.

IO is a lot more regular also.

http://www.haskell.org/
Michael Fogeborg wrote re: Teaching my kids to program
on 02-21-2005 1:40 PM
How about ToonTalk ? http://www.toontalk.com/
"Inside of ToonTalk's animated world you will build and run all sorts of computer programs. While learning how to program you will face challenging puzzles, express your creativity, learn new ways to solve problems, and have loads of fun!"
Sean Malloy wrote re: Teaching my kids to program
on 02-21-2005 1:53 PM
+1 for Smalltalk, but I would suggest picking up a copy of Dolphin Smalltalk (Windows based). It should be immediately recognisable as a windows application to your kids, and it is a fast and modern Smalltalk implementation. It really is fun to play with and program against.

The MVP framework will be the most complex part of the whole endeavour, but the kids don't even need to venture there for a while.
Ethan Aubin wrote re: Teaching my kids to program
on 02-21-2005 2:04 PM
In my experience, programming is boring for most kids unless they have some instant visual gratification. <a href="http://haskell.org/edsl/pansharp.html">Pan# </a> provides that sort of feedback, and would be fun for middle schoolers.
Brian wrote re: Teaching my kids to program
on 02-21-2005 2:30 PM
Don't foget, learning a musical instrument is an excellant precursor to learning to program.
maxim khesin wrote re: Teaching my kids to program
on 02-21-2005 2:30 PM
(I am guessing Don's kids are 2 and 4 and already know C#, they are just looking for a more powerful/less verbose language. And that totally rules out Java).
Seriously I second the visual feedback comment. I think VPython is a good choice with its 4-line OPenGL programs. I also think languages with an interactive shell are a good method of feedback.
max khesin.
Chui Tey wrote re: Teaching my kids to program
on 02-21-2005 2:48 PM
Depending on the age group, I'd probably start with game construction kit, and then onto Erlang. The idea is to get children used to highly concurrent, asynchronous and event-based programming.

My children are 4 and 6, and I'm starting to scratch my head too.
zhuck wrote re: Teaching my kids to program
on 02-21-2005 3:18 PM
please read http://www.htdp.org/2003-09-26/Book/curriculum-Z-H-2.html
berkus wrote re: Teaching my kids to program
on 02-21-2005 3:50 PM
i dunno what language you end up using, but myself i would certainly teach them Ruby.
its clean, its truly object oriented, its easy to grasp once you know english, it has an awesome web-programming framework called Rails (www.rubyonrails.org), it has Qt and KDE bindings and KDevelop support (which I am, as KDE fan is very fond of).
Maybe there's more.
I don't see a single downside, honestly.
berkus wrote re: Teaching my kids to program
on 02-21-2005 3:52 PM
Oh, and one more is Colobot game - programming robots in C-like langugage in a graphical environment, quite a good toy for kids.
samc wrote re: Teaching my kids to program
on 02-21-2005 4:50 PM
+1 Haskell, there have been attempts to teach kids programming with haskell using graphics (the laziness in particular makes this attractive) and music, check citeseer for the papers (it was down when I posted)
mark wrote re: Teaching my kids to program
on 02-21-2005 4:54 PM
Haskell. C'mon, kids love monads.
Anonymous wrote re: Teaching my kids to program
on 02-21-2005 5:27 PM
Sriram:
I don't know about kids - but when I started to
code, I wanted to see *visual output*. I wanted to
make those same programs that are there in Windows.
So +1 for something with an easy GUI toolkit..and
preferably visual designer. VB.NET anyone? :)

Don't spoil the kids by motivating them to use Microsoft products and converting them to a state where they cannot escape out of the lock created by Microsoft.

There are certainly better free software alternatives. For example, look at eric3. And commercial ones including WingIDE and Komodo.
Paul Snively wrote re: Teaching my kids to program
on 02-21-2005 6:14 PM
If the goal isn't for them to learn to be programmers in the what-people-who-are-paid-to-write-software sense do, then for God's good sake, teach them <em>anything but</em> C, C++, C#, Java, Perl, or PHP. I would also slightly more hesitantly recommend against Python and Ruby, but only because they both make unnecessary compromises in elegance and uniformity in order to be pragmatic. There's nothing wrong with that if you want to be a programmer, but since that isn't the point, I vote against them.

Depending upon their ages, you may wish to consider <a href="http://www.toontalk.com">ToonTalk</a>, a fantastic, fun visual programming environment that concretizes some very sophisticated concepts. Short of that, I agree with those who propose Scheme via DrScheme, but would suggest "The Little Schemer" as a launching-off point vs. SICP: SICP is for MIT undergrads!

If your kids are teenagers, though, and you really want to expose them to virtually <em>all</em> of the concepts underlying computing, then there's really no choice other than <a href="http://www.info.ucl.ac.be/~pvr/"></a> and <a href="http://www.mozart-oz.org">Oz</a>.
Paul Snively wrote re: Teaching my kids to program
on 02-21-2005 6:16 PM
Oh, and PLEASE don't teach them about pointers or any other aspect of manual memory management. That low-level nonsense has nothing to do with learning what computing is about. If there's a reason for them to learn how to use the currently-popular quasi-portable assemblers, they can pick that up after they've learned good design and implementation skills in better environments.
G. Grothendieck wrote re: Teaching my kids to program
on 02-21-2005 6:47 PM
I have actually tried this with a
13 year old and my experience
is that motivation is the key
factor which means they need to
be productive almost immediately. I
would start with teaching them HTML
since they will rapidly be able to
develop web pages, which is very
motivating. I would get them an
HTML reference card since they
won't have patience to read a book.
Be sure to show them colors. If
they still seem interested
after that then they can leverage
the web environment they just
learned to first copy neat
javascript animations into their
web pages and if they are still interested after that to learn javascript. There is a good chance
you will not get as far as javascript but at least you
will have left them with HTML and some appreciation of how the web works and they will have had fun doing it.

The other nice thing is that
they have everything they need
right in their browser.

The problem with conventional programming languages such as
Basic, Lisp, Python and Ruby, etc. are that kids have to learn too much
before they can get useful results and that is demotivating.

The Mysterious Dr. Foo wrote re: Teaching my kids to program
on 02-21-2005 6:59 PM
Ruby
DrScheme
FORTH :-D

I have also found Ruby and Common Lisp very suitable for extending with C, which you could do to expose any graphics/GUI/whatever functionality that you may find lacking. Your kids can then use your interfaces as they learn.
Dorai Thodla wrote re: Teaching my kids to program
on 02-21-2005 7:26 PM
How about Logo? If you have not, please read "Mindstorms" and "Turtles, Termites and Traffic Jams". Here are at least three reasons:

- Logo promotes "mathetic" thinking
- Kids love to start with some of the cool early graphics stuff they can do
- With Star Logo and others you can do some really cool simulations

Let us know what you decide.

regards,
Dorai
Jimmy Cerra wrote re: Teaching my kids to program
on 02-21-2005 8:05 PM
I further the call for LOGO. When I was younger, the ability to program the robotic turtle really empowered me! The fancy shapes and colors produce amazed me, and it made me feel like I was accomplishing something. It isn't a coincidence that one of the first things I programmed in Integer BASIC (my second language) was a clone of LOGO for the IIgs (also, we couldn't afford a copy).
Paul Khuong wrote re: Teaching my kids to program
on 02-21-2005 9:05 PM
What about Lisp on RCX? http://www.yuasa.kuis.kyoto-u.ac.jp/~yuasa/xs/ Works on lego mindstorms, and, i have to admit that interacting with robots will always be cooler than doing so with a drawing on the screen :)

Dubé's PICBIT implements R4RS for PIC microcontrollers, so at least R4RS should be doable on RCX.
Michael A. Cleverly wrote re: Teaching my kids to program
on 02-21-2005 9:51 PM
I plan on teaching my kids Tcl/Tk during their summer vacation this year. With only 11 rules to the entire language, I expect they'll be able to pick it up fairly quickly.
Ilya Vinarsky wrote re: Teaching my kids to program
on 02-21-2005 11:30 PM
Don,

What do you think about starting from the bottom and going up - what is a bit, what is the binary notation, how logic gates work, how to create an adder, a shift register - and with a lot of handwaving, a processor? On the one hand, you can buy TTL components for 35-70 cents apiece and actually build something physical with your hands, and on the other hand, there are obvious connections between this and the school curriculum: a ripple-carry adder is implementing the elementary school addition algorithm; in school, children are told that addition and multiplication are associative - well, if they are associative, you could do them in parallel!

I remember being tremendously excited when doing the digital design project in college, and judging by the review of this book http://www.amazon.com/exec/obidos/tg/detail/-/0672210355 other people could be as well: "It was like a grimoire or spell-book: each example made me say "Wow!" in a way no non-fiction book had or has, before or since. It made logic _real_."

I myself learned to program at age 13 from Meyer and Baudoin's _Méthodes de programmation_ in Russian translation, which introduced FORTRAN IV, PL/I and Algol W (a precursor of Pascal) simultaneously; my first program was Conway's Game of Life in PL/I. The language itself doesn't matter, it can even be as ugly as PL/I, but I think that ML is too abstract for somebody Max's age.

Nikita is going to a private school this year, and I am volunteering there, preparing the kids for a math competition. After the competition, I am thinking about starting a "computer science circle" there (perhaps with kids from outside the school), but I am not yet sure, what material to give to them.
Erich Neuwirth wrote re: Teaching my kids to program
on 02-21-2005 11:54 PM
I really would second the case for LOGO. There are some very good books. Computer Science Logo Style by Brian Harvey is an extremely well written introduction into functional programming for kinds. The PDFs are available from http://www.cs.berkeley.edu/~bh/logo.htm

Most people know about LOGO turtle graphics, but it also is an almost complete functional programming language. Lambda expressions as argumentes are possible, so one can use operators very early in a "programming curriculum".
In fact, compared to Scheme the two main differences are dynamical scoping and
the fact that function cannot return functions as values.
It also is definitely worthwile to look at Imagine, a modern variant of LOGO from Logotron (www.logo.com). Imagine is Logo with objects and agents. It is very easy to program games with moving objects and similar things, but all with "clean" abstract conceptualiziation.
It is not free and not open source, but not very expensive. Netlogo is a (free) offspringof Starlogo (http://ccl.northwestern.edu/netlogo/)
and it also is meant to study agent interaction in a functional language.
The free versions of "classical" Logo for windows are the already mentioned MSWLogo
(www.softronix.com) and UCBLogo
(http://www.cs.berkeley.edu/~bh/logo.html)
Mike Smith wrote re: Teaching my kids to program
on 02-22-2005 12:17 AM
Have you considered the availability of a good tutorial and reference book? Ruby has that excellent "Pickaxe" book by Hunt and Thomas that you even get bundled with your installation.
Stefan Tilkov's Random Stuff wrote Teaching Kids to Program
on 02-22-2005 12:26 AM
An excellent discussion started in the comments of Don Box&#8217;s post. I&#8217;ve been thinking about the right way to teach my kids (well, my son at least, for the girl it may be a little early) to program without spoiling the fun of it. A few of the comments pointed to ToonTalk, which seems to be very interesting....
pklausner wrote re: Teaching my kids to program
on 02-22-2005 3:07 AM
At ETH Zurich there are projects for Educational Programming Environments. Kids start with visually appealing finite automata and progress towards Java:
http://www.educeth.ch/compscience/karatojava/
Brian Hurt wrote Consider Scheme
on 02-22-2005 6:16 AM
Pros:
- as simple or simpler than LISP
- similiar to LISP, so switch over for you shouldn't be hard
- Dr.Scheme environment allows you to not have to introduce Emacs, allows you turn features off, etc.

Cons:
- none that I know of

I think I'd stay away from ML/Ocaml/F# as a first programming language. I'm a big fan of Ocaml, but it's way too complicated. You don't learn to fly in a 747, you learn to fly in a Piper Cub.
Jim Dodd wrote re: Teaching my kids to program
on 02-22-2005 7:35 AM
Have they learned to follow a recipe and to cook yet? My eight-year old son is home schooled by my wife (I help a bit) and one of their curricula suggested cooking and woodworking as good ways to learn a lot of the concepts that we programmers find useful. The cons are that the feedback isn't instantaneous and they must be supervised (you don't want the gas stove to explode or fingers stuck in the blender). But they learn to follow directions and modify the directions when needed. They learn fractions and measuring. They learn organization. They learn filing. They learn about databases. They learn to convert between diferent measuring systems. Simple things like cookies and brownies are a good place to start. My son helps with our meals now (and I continue to gain weight).

Sorry if this is too far from real programming but it is great learning.
Wil wrote re: Teaching my kids to program
on 02-22-2005 9:53 AM
How about something like Mathematica? After all, the fundamental concept of that product is that everything can be represented as a symbolic expression, so if you like lists, it will appeal to you. Nice for drawing pretty graphics, too. Huge draw-back: it ain't cheap!!!!
I want to learn python wrote re: Teaching my kids to program
on 02-22-2005 3:33 PM
i want to learn python. i know most of the basics of programing but i want to learn to the code to.
Phil Windley's Technometria wrote Programming for Kids
on 02-22-2005 5:28 PM
Don Box is trying to decide which programming language to teach his kids. His list of candidates includes: lisp, ML, Smalltalk, and Ruby. Personally, I'd recommend Scheme in the DrScheme IDE....
Lyndon wrote re: Teaching my kids to program
on 02-22-2005 7:33 PM
what about rebol?

"If you know nothing about programming, but want to learn...REBOL is a great place to start. It has a nice shallow learning curve, so you can start doing things quickly, but you won't outgrow it anytime soon because it also has amazing depth"

Some marketing speak but still.

http://www.rebol.org/cgi-bin/cgiwrap/rebol/boiler.r?display=new-to-rebol.html
Jim Moy wrote re: Teaching my kids to program
on 02-22-2005 8:19 PM
Hi Don, I'm surprised nobody's mentioned Processing in the flurry of comments here: http://processing.org. Yeah, it's Java, but the environment makes it so you can ignore "public static void main" and make fun things happen very quickly.

<p>I think the trouble you're going to have with all the alternatives you're considering is that they're programming environments *first* and fun environments *later*. Much later.

<p>My kids have enjoyed Cocoa (not the OS-X API) http://homepage.mac.com/redbird/cocoa/ and Logo: http://www.softronix.com/logo.html, both very simple environments and let them see what they're doing right away.
Tom Hunt wrote re: Teaching my kids to program
on 02-22-2005 8:50 PM
Guy Haas has taught his Logo based Introduction to Programming: http://www.bfoit.org/Intro_to_Programming/index.html
to middle and high school kids. He started teaching in Java but moved to Logo. My experience with the middle school classes is 1) Motivation matters and as a result 2) Get them writing games as soon as possible. Katie Dean at Wired had an article about our program before the transition to Logo:
http://www.wired.com/news/school/0,1383,44533,00.html
The Perl class she refers to is at:
http://www.berkeleyinternet.com/~tom/perl/
Kaushik wrote re: Teaching my kids to program
on 02-22-2005 11:24 PM
+1 for DrScheme along with HTDP or SICP.

http://www.htdp.org
http://mitpress.mit.edu/sicp/

Kaushik
James Robertson wrote re: Teaching my kids to program
on 02-23-2005 5:24 AM
Don,

When you examine Smalltalk, you ought to have a look at Squeak's EToys:

http://www.squeakland.org/author/etoys.html

It's a great environment for teaching kids programming logic - doesn't bury them in syntax or programming models. From there, you can decide when and how to introduce more concrete development.
Dima wrote re: Teaching my kids to program
on 02-23-2005 7:09 AM
I would chose Scheme (which is a better Lisp), namely <a href="http://www.drscheme.org/">DrScheme</a> which is especialy good for <a href="http://www.teach-scheme.org/">teaching programming</a>
Andru Luvisi wrote Old Logo memos
on 02-23-2005 9:01 AM
I've tried to put together a list of the original logo memos from MIT. They're currently scattered throughout the old AI lab memos. What I've put together so far is up at http://www.sonoma.edu/users/l/luvisi/logo/logo.memos.html

It's interesting to see how the creators of Logo used it for teaching children all sorts of things (logic, geometry, refining a solution, music, ...).

Many of them are very interesting. The first four do a good job of explaining the project and the philosophy. The TORTIS papers are about a big button box that let really young children control the turtle (including the ability to store procedures and a "slot machine" which the child programmed by putting cards representing actions into slots in a board!). There are papers reporting on a test of Logo in a Brookline school with LSI-11's (microprocessor version of the PDP-11). There's even a paper breaking down the art of juggling into "procedures" and explaining how to fix common "bugs". Good stuff!
Jeff Ratcliff wrote re: Teaching my kids to program
on 02-23-2005 10:00 AM
In response to Ilya Vinarsky:

I've toyed with the idea of creating a kids-based computer (or at least a half-adder) for years but never tried it.

Each child would act as a logic gate. Then numbers would be "input" to the adder and the results would be "output".

It seems to me to be a great way to demonstrate that very simple parts can work together to implement a function that the individual parts don't understand.
Sean wrote re: Teaching my kids to program
on 02-23-2005 10:47 AM
If the goal is for your kids to learn the fundamentals of function, sequence and logical flow -- I think the actual programming language isn't important -- I think that Logo and Lego Mindstorms are great ideas... perhaps put some domain modeling to work using functional flow block diagrams to visualize things like logic gates and the like.
Prabhakar Ragde wrote re: Teaching my kids to program
on 02-23-2005 2:36 PM
I want to second the comments made about the language Scheme and the platform DrScheme made above, with this additional information: I am using it right now with my nine-year-old daughter, at her urging, and it is working well so far.
kh wrote re: Teaching my kids to program
on 02-24-2005 12:26 AM
>>so if you're kids are older, then Hello,
>>World. might not do the trick to spark their
>>interest

"Yo! World!" ?
Steve Holden wrote re: Teaching my kids to program
on 02-24-2005 9:58 AM
Wow ... there is a lot of comments.

Another option to throw in the mix is a scripting language from Dave Winer that is part of Frontier (http://kernel.scripting.com). There is a built-in debugger, excellent outlining and code viewing options, and some good free resources. You can also dig into with TCP/IP, XML, OPML, and HTML to name a few from a lot of public samples. It also works on Windows and Mac. - Steve
on 02-24-2005 11:12 AM
With any luck I'll get to worry about this soon.
Michael Bertelsen wrote re: Teaching my kids to program
on 02-25-2005 6:47 AM
Prolog is a cool way to tell a computer som facts and therafter ask it some questions. You can get a .NET Prolog called P#

PROLOG:
"Prolog, which stands for PROgramming in LOGic, is the most widely available language in the logic programming paradigm. Logic and therefore Prolog is based the mathematical notions of relations and logical inference. Prolog is a declarative language meaning that rather than describing how to compute a solution, a program consists of a data base of facts and logical relationships (rules) which describe the relationships which hold for the given application. Rather then running a program to obtain a solution, the user asks a question. When asked a question, the run time system searches through the data base of facts and rules to determine (by logical deduction) the answer."
Bernard Notarianni wrote Fully agree with Don
on 02-25-2005 8:08 AM
I agree 2000% with Don.
Iam exactly in the same situation: learning Smalltalk and Ruby and (re)discovering OO and pleasure of programming.

mike v wrote re: Teaching my kids to program
on 02-25-2005 8:31 AM
LOGO

Pro: Minimum syntactical overhead
Pro: Tight visual feedback loop
Pro: It's designed as a learning language.

Con: Not OO, but if your intention is to start with the basics like sets, algotithms, functions, then arguably OO design just contributes to syntactical overhead
Con: Not as powerful (I guess this depends on your definition of powerful -- I wrote LOGO programs to do statistical analysis of mathematical problems, to draw fractal curves, to do recursion, and even wrote some code-generation functions -- I think people don't give LOGO enough credit sometimes. Plus, you can hook it up to things like lego robotics kits.)
eljay wrote re: Teaching my kids to program
on 02-25-2005 2:32 PM
You may consider that my opinion is a biased (I am one of the developer of FreeRIDE, the Ruby IDE) but I can tell you that my son is 11 and I was amazed at how quickly he got up up to speed with Ruby.

At first I thought myself that OO was too complex for kids but that has proven to be wrong with Ruby. OO is so natural and easy to understand and code so children quickly get used to it and litterally start thinking OO.
Vibro.NET wrote re: Teaching my kids to program
on 02-26-2005 11:59 AM
I'd go for ML, maybe starting with just the mere Lambda-Calculus embedding and letting them discover by themselves all the rest. Its 1:1 relationship with the algebraic modeling basic blocks makes it perfect to get the hang of the structure of problems, and if they weren't exposed to the imperative paradigm yet the approach could be very effective.
Hakan Eren wrote re: Teaching my kids to program
on 02-26-2005 2:47 PM
I've no kids yet but if I had, I'd teach html first and then javascript next. A browser and notepad is enough to get started with and a simple free web hosting solution would be enough to publish their work. Publishing their work to friends would be a big motivator I guess.
Don wrote re: Teaching my kids to program
on 02-26-2005 4:26 PM
I second the REBOL suggestion. It's an interesting language that is both easy to get things working quickly, and also complex enough to keep them busy learning (and thinking) for a long time. The language was inspired by both Forth and LISP.

REBOL/View has built in graphics to allow them (like LOGO) to get graphics apps up and running very quickly.

It has an interactive environment for entering and debugging scripts - so no need for teaching them an editor, or the edit/compile/debug cycle..

Instant and mostly tangible results will keep them interested.

Opening "Hello World" in a Window is as easy as this:

view layout [text "Hello World!" button "Quit" [quit]]

I also love Ruby, so that's a fine way to start them as well, but harder to get anything graphical going, which I think is important for kids. I got sucked into programming because I could easily create graphs, pictures, and sounds using my Commodore 64.
Don Box's Spoutlet wrote It's down to Scheme or Logo
on 02-26-2005 5:31 PM
Geek Noise wrote Geek Notes 2005-02-26
on 02-26-2005 7:38 PM
Simon Johnston wrote re: Teaching my kids to program
on 02-27-2005 3:47 PM
Comments posted @ URL
TrackBack wrote Bernard Notarianni - The future of Java and others: Don Box’s point of view
on 02-28-2005 4:34 PM
Bernard Notarianni - The future of Java and others: Don Box&#8217;s point of view
Pick A Bar wrote Teaching programming basics
on 03-02-2005 3:36 PM
I'm considering teaching one of my non-technical coworkers the basics of programming. Another developer on my team asked what language I was planning to use, and I replied "Javascript" before I'd even processed the question fully. Why JavaScript and not...
Lee Wilson wrote re: Teaching my kids to program
on 03-04-2005 12:23 AM
I'm actually dealing with the same question right now as my son is wanting me to teach him programming. I've gone down a lot of the same thought paths you and your readers have.

I also know how much my son loves games (like any 9 year old boy that I know). So, since I program games and he wants to do what I do, I'm going to get him <A HREF="http://darkbasic.thegamecreators.com">DarkBASIC</A>. It actually seems like the perfect thing to teach simple programming as well as (more importantly) keep his interest high enough to want to learn more as he gets older.

Just my solution to the problem - thought you might be interested =)
Teoman wrote re: Teaching my kids to program
on 03-05-2005 11:39 PM
Turkish :)
Jerrett Taylor wrote re: Teaching my kids to program
on 03-07-2005 8:43 AM
What about whitespace? :)

http://compsoc.dur.ac.uk/whitespace/
Michael Rys wrote re: Teaching my kids to program
on 03-07-2005 6:48 PM
Depending on the age of the kids: Lego's Mindstorm and Logo I think is good for 8 to 10 year old. Scheme is 11+, and at 12 I would start to look at APL or J (very mathematical, but provides good functional abstraction and parallelism).
Anuncie Aqui! wrote Dox Box mostra que um pai realmente preocupado
on 03-17-2005 9:46 PM
Mum wrote re: Teaching my kids to program
on 03-20-2005 10:34 PM
what proograming tyter do you use to teach kids to type programs???????????????????
Adam Doyle wrote Hellooooooooo?
on 03-22-2005 12:43 PM
Um, hello......I don't know how old your kids are, but I can't even stand to program lisp, and thats sad. But seriously, the best thing to start out with is VB.NET, (and get the current beta for free!), and teach them the basics (no pun intended), and let them use intellesense for everything else.

Also, after that, go to http://www.alphaworks.ibm.com/ and download their RoboCode, CodeRally, and CodeRuler so your kids can play addictive games while learning Java!
Adam Doyle wrote Oh Yeah,
on 03-22-2005 12:50 PM
You might consider an html-supported comment system. If you look at all the comments above, then you'll see that everyone is trying to use it anyways (unsuccessfully.)
jawad wrote re: Teaching my kids to program
on 03-24-2005 7:04 PM
no command
Jonah Stagner wrote re: Teaching my kids to program
on 04-06-2005 10:02 AM
My team is developing a new language and IDE just for the purpose of teaching children to program.

The language is visually similar to BASIC, so it's easy for programming parents and non-programming kids to read and learn, but has some very important differences.

One way that this product is targeted at kids is by making it easy for them to get visual results without having to learn how to create a window, a graphics device, etc.

It supports typed variables, decisions with if-then-else, loops, methods, functions, structures, arrays, and other important basic programming concepts.

It's not complete, being at Technological Preview stage, and development is still ocurring on this product.

We would love it if people would give it a look-see and maybe provide feedback, especially those in the development community.

Obviously, we hope that you love it, but if you don't we'd really like to know why.

You can find it at: http://www.ms-inc.net/kpl.aspx
on 04-10-2005 4:30 AM
Recently, Don Box wondered what would be the ideal programming language for teaching kids to program. (See also the LtU thread, my own entry on it and the comment left there, as well as Steve&#8217;s quest for the same thing). I tried to find something exploring the Mac, and came across Alan Smith&#8217;s ACSLogo, a free Logo environment for...
Leigh Swensen wrote re: Teaching my kids to program
on 04-14-2005 4:10 AM
i am 15 and i want to learn how to program without getting bored and having fun but what programs do i need to make games and flash shows could someone e-mail me on something that would be ideal for me to start out on


swenso_125@hotmail.com
Darlene Willis wrote re: Teaching my kids to program
on 04-20-2005 8:49 PM
I'm a eleven year old kid and I'm trying to write a book. I want to share my book with other people and by doing that I want it to be published. How do you get a book published? What does Url mean?
David's blog wrote Exotic .NET Language of the Month: Logo
on 05-04-2005 1:49 PM
David's blog wrote Exotic .NET Language of the Month: Logo
on 05-05-2005 4:42 AM
Simon Prior wrote re: Teaching my kids to program
on 05-26-2005 2:59 AM
Hi don,
This sort of thing interests me as for my university computer science final year project, i am designing a Children's Programming Tutor. Giving 10 year olds the chance to program in a way that is engaging and interesting without being too complex. If anyone has any ideas what to do on this, feel free to contact me simonbfs@hotmail.com
Sum wrote re: Teaching my kids to program
on 05-31-2005 5:24 AM

As a mommy - I would rather kids learnt first that programming is a tool - a means to an end.

My kids( 9 and 11 ) are facinated with Terrarium and Lego Mindstorm. They did not like Squeak too much. They use Basic and very preliminary level of C++ to do projects for science and math.

Taking the approach that we solve a problem using any language seems to work with kids better than teaching the language.
mobile info wrote re: Teaching my kids to program
on 06-09-2005 7:50 PM
i am 15 and i want to learn how to program without getting bored and having fun but what programs do i need to make games and flash shows could someone e-mail me on something that would be ideal for me to start out on
Alex G. wrote re: Teaching my kids to program
on 08-16-2005 4:24 AM
Wow, what a busy comments section!
+1 Scheme = PLT (Dr Scheme) seems a no-brainer.
Little Lisper/Schemer good start.
+1 Prolog (You did say you wanted them to think logically, yes?)

Various functional langs could be substituted for Scheme...
REBOL is really small (so you could muck around, even on a PDA). I think it's important, since kids like PDAs.

You don't want to tie them to a platform.

Neg-Suggestions:

No languages that focus only on OOP /imperative style. OOP is not "logic" or "thinking", it is just hierarchising. Anyway most Schemes and functional langs have some kind of OOP add-on these days. I agree wrt Squeak interface being confusing.

Not LOGO. It was OK once upon a time, but things have moved on. LOGO has nothing you can't do in Scheme / REBOL / whatever func.lang.

Or check out mozart-oz for _YOURSELF_ and get the best of declarative / logical / functional! Use what you learn there to teach your kids! (Google: CTM Peter Van Roy)


S Vanya wrote re: Teaching my kids to program
on 08-16-2005 6:55 PM
My son is 4 and while he knows the alphabet and numerals, writing script just won't work. I did find DRAPE though http://www.cs.uu.nl/people/markov/kids/drape.html.
It is a turtle-based environment with immediate (press play) feedback based on dragging the functions down into procedures. Best of all he really likes it! Looks like he could also do if-thens and loops, too. Which is what I wanted to find, after I had to write down his variations on the Arlo Guthrie tune, "I don't (do)want a pickle"
I'm excited to check out DrScheme too.
Max Hailperin wrote Concrete Abstractions [was: re: Teaching my kids to program]
on 08-23-2005 2:55 PM
Contrary to what Fernando Rodriguez wrote in his comment, Concrete Abstractions is not out of print. The newest development is that it is now available for free on the web. However, the publisher is also continuing to sell the printed and bound form of the book. If any reseller or publisher's representative is telling you it is out of print, I would like to know who, so that I can straighten the confusion out. For more information on the book, including a link to the free PDF files, see http://www.gustavus.edu/+max/concrete-abstractions.html
Pier wrote re: Teaching my kids to program
on 08-31-2005 11:05 PM
If you can find a copy of it, dBASE II (say what?) and REBOL. Honorable mentions: Io Language and FiCL (the Forth variant that supports OOP).

dBASE II is the ORIGINAL scripting language + data structure that makes anyone instantly productive.

REBOL is the scripting language 21st that makes anyone instantly productive.

Worst languages (that are horribly popular): C++, C#, Java, Visual Basic; Perl, TCL, Ruby, Python.
RichardH wrote re: Teaching my kids to program
on 09-27-2005 4:09 AM
French? German? Chinese? ...

Anybody got any suggestions for kids who dont understand "print" (but do understand "imprimer")?
Robert Fisher wrote re: Teaching my kids to program
on 10-02-2005 6:35 PM
I've really enjoyed reading all the comments in this thread.

The more I've heard arguments for different languages, though, the more I've come to the conclusion that maybe I shouldn't worry about which language to teach them so much.

My kids will have lots of languages available to them. They'll get to see my practical application of many of them. They'll get to see other people's practical application of others (since I have lots of open source on our computers). I'll help them with any language they show interest in. If they come up with a program they'd like to try to write, I'll do my best to help them choose the right tool for that job.

While I don't know that I'd start them on the basics of logic circuits, I've benefitted a lot from knowing how things work. I'll encourage my kids to understand every aspect of these machines, if they want to follow in their dad's (& granddad's) footsteps.

That said, I've been thinking it would be fun to write a turtle-graphics app with guile & spidermonkey. It'd be cool to be able to contrast the two languages in the same app. Maybe add more languages too. Maybe add some type of robot-war where you can pit robots programmed in different languages against one another.
Robert Fisher wrote re: Teaching my kids to program
on 10-02-2005 6:45 PM
RichardH asked: "Anybody got any suggestions for kids who dont understand 'print' (but do understand 'imprimer')?"

It's a lot of work, but it isn't hard to "localize" many programming languages.

In Scheme, you can make localized aliases for functions with a simple "(define scribe write)". (Sorry, Latin was my "foreign" language.) You can use macros to make aliases for macros & any built-in special forms.

In C or C++, you can use #defines to make aliases for all the keywords. (Icky, but it works.) Functions could be done by writing wrapper functions or #defines. Typedefs can handle types & structs. Structure members could be a problem, I suppose.

Java is nice in that your source code (& identifiers) can use Unicode characters, but I guess you'd have to use an external preprocessor to alias the keywords.
Steve Bargelt wrote Teaching Kids Programming
on 10-11-2005 10:05 PM
Janus wrote re: Teaching my kids to program
on 11-08-2005 5:15 PM
For younger children, I suggest StageCast Creator. For children in tweenage years, go with MicroWorlds. In the teens, Runtime Revolution.
stelios wrote re: Teaching my kids to program
on 11-11-2005 5:33 AM
There is a new kids programming language ,
the Kids Programming language or KPL.
I will try to teach it to my 12 years old boy and post the results.
Bill Baumiester wrote re: Teaching my kids to program
on 11-28-2005 8:45 PM
Well, teaching anyone to program is quite a chore. I've been in the computer field since '81 and even Bill Gates admits that computer hardware evolution is light years ahead of the software development field. Perhaps the biggest problem is that program developers sacrifice English syntax to keep their programming statements very small. Example: in Basic "Int" means integer (means what?) Any programming language is easy if the implied (hidden) English language portion could be seen and the concept of what the programming statement is trying to accomplish understood in simple terms. I had this same problem in mainframe computing where IBM used JCL code(Job Control Language) to facilitate application processing and control of the mainframe operation environment. It's like speaking in ancient Greek. Who wants to do that? Quoting Shakespeare at a cocktail party goes further with impressing the listener than trying to quote a C+ program code statement. So my point? - if you already understand programming (and this appears to be a site where programmers want to teach their children how to program) then use English as the power tool to explain what it is the program or code is trying to achieve.
Dana wrote re: Teaching my kids to program
on 11-29-2005 6:15 AM
I just wanted to thank all the previous posters for their carefully considered comments. My 11-year-old just told me she'd like to learn how to program, and this discussion has been the most useful evaluation of where I should start that I found. (Interestingly enough--she has a friend that programs cool graphic stuff. That did not spark her interest. When I told her about my creating a simple all-text Basic program on my Apple IIc when I was a kid--now she's interested. So--creating cool graphic games isn't everything!) :)
Pier wrote re: Teaching my kids to program
on 12-05-2005 1:42 AM
on @ 9/27/2005 3:09 AM RichardH wrote, "
French? German? Chinese? ...

Anybody got any suggestions for kids who dont understand "print" (but do understand "imprimer")"

With REBOL, you simply do this at the prompt

>>imprimer: :print

From that point forward, REBOL knows that imprimer means print.

Program? That's so 20th century.

Teach your kids to speak REBOLese!
Emmanuel Wijas wrote re: Teaching my kids to program
on 12-15-2005 7:18 PM
I just read this really interesting thread.
My children are 8 and 9. I also wanted to teach them programming. I first tried with Python. We did some basic programs together but things become rapidly complex when you want to have some visual effects. What's they really enjoyed was gamemaker ( www.gamemaker.com ). This freeware was originally designed to program games graphically. You could have visual results for children really quicly which keep them interested....

Emmanuel
http://www.kidsprogramminglanguage.com/ wrote re: Teaching my kids to program
on 01-09-2006 4:06 PM
Kid's Programming Language
http://www.kidsprogramminglanguage.com/

That is the best language to learn and have fun for kids!!!
I am using and I loved it!!!!!!!
Victor Cosby wrote re: Teaching my kids to program
on 01-14-2006 2:28 PM
I wish Ruby or Smalltalk had been my first language instead of Basic, Pascal, Perl, Java, C#. I wouldn't have to unlearn so many bad habits. ;)

This month Chris Pine is releasing an extended version of his Ruby tutorial on how to program with the Pragmatic Programmers.

http://www.pragmaticprogrammer.com/titles/fr_ltp/

http://pine.fm/LearnToProgram/

Chris has taught children to program Ruby so this might be a good resource for you.
Ming wrote re: Teaching my kids to program
on 01-14-2006 9:04 PM
If you're interested in teaching a more traditional programming language, I've put together a Javascript tutorial that's geared towards kids over at

http://www.programmingbasics.org

Parts of the tutorial are still a little "rough around the edges," but I'm planning on refining the website once I get some initial feedback about what works and what doesn't work.
Michele Costabile wrote re: Teaching my kids to program
on 01-15-2006 1:29 AM
Have you considered FSharp? It is ML reborn as a .NET language. Think of it: you could draw an image without pain. The kids would like that: you cannot be short of drawings to scan. Make backgrounds and sprites, add audio and you have a story: they like stories.
I am impressed by this: I was making my own list for the same question and the languages where just the same, and maybe in the same order, with LISP pretty high on the list. I had not considered Ruby, though and did not include Smalltalk that I never studied enough.
Michele Costabile wrote re: Teaching my kids to program
on 01-15-2006 11:28 PM
On second thought, I installed drscheme and F# and experimented a little bit. It is true that drscheme rocks and it is much easier to create working code, less typing to think about.
On the other hand I am impressed by how high fares ML in the language shootout. I think I will use more F# in my work.
Tony Forster wrote re: Teaching my kids to program
on 01-20-2006 8:04 PM
My favourite is Gamemaker www.gamemaker.nl
See samples of student work:
http://online.haileybury.vic.edu.au/sites/edrington Gamemaker year 1 to 8
Phillip Gagnon wrote re: Teaching my kids to program
on 01-21-2006 6:41 PM
I would definately recomend starting with HTML. Or better yet, use ActionScript. It is very powerful and very forgiving. It is also very high on the Instant Gratification aspect.
Brian C. wrote re: Teaching my kids to program
on 01-23-2006 12:50 AM
Microsoft's MSDN site led me to try Kids Programming Language (KPL) that has been mentioned in previous posts, and I found this site subsequently. I wanted to add my testimony that I am pleased with KPL. I started my 11-year-old son on KPL and he understood it instantly, despite having no prior introduction to such concepts as variables, data types, loops, et al. I walked through the tutorial with him, but that approach only seemed to slow down his pace of learning intuitively. He and his younger siblings especially enjoy the many sample games and demos. Now my 11-year-old is confidently designing/developing a new game that he had been waiting to write until he acquired the necessary skills and tools. My other son, age 7, is asking to learn too. (My 9-year-old daughter hasn't seen it yet, and I am eager to get her reaction soon.)

Supposedly, the KPL development environment can generate the equivalent source code in VB.NET and C#, which was an important factor that led me to try KPL, but it seems to be unimplemented or disabled in my installation.

The tutorial, as written so far, is very good though incomplete. It introduces the graphics concepts of the screen coordinates, line drawing (in a turtle graphics style) and sprite manipulation. Also covered are programming concepts of variables and looping. The tutoring abruptly ends there. I would like to see it expanded and at least include simple descriptions of logical constructs, structures, methods, and objects.

Looking forward to seeing the outcome of my children's new-found productivity!
Michele Costabile wrote re: Teaching my kids to program
on 02-03-2006 12:31 PM
Hey Don, I am curious to know your current views on the language choice.
Nick Antonaccio wrote re: Teaching my kids to program
on 02-19-2006 11:35 PM
I originally put together the tutorial at http://musiclessonz.com/rebol_tutorial.html to get young students interested in programming. Maybe it can help - good luck!
Mike Waite wrote re: Teaching my kids to program
on 02-25-2006 1:24 AM
You are welcome to try to capitalize on my efforts in this area - a family hobby that spun out of control! See http://VisualBots.com.
Niki E. wrote re: Teaching my kids to program
on 02-25-2006 4:11 AM
+1 for Python.
The programming style and object model is quite similar to Ruby's (that is, compared to ML or Lisp), so they share many advantages/disadvantages, but Python has a simpler syntax, and none of these perlish @$/-special characters.
FWIW, I've seen a Python-For-Kids introduction called "RUR-PLE" on SourceForge, which might be worth a look.
Jay wrote re: Teaching my kids to program
on 04-08-2006 1:13 PM
Here are some links for kid friendly languages

www.kidsdomain.com/down/program.html
www.kidsprogramminglanguage.com
www.simplecodeworks.com/website.html
www.rapideuphoria.com
Ian wrote re: Teaching my kids to program
on 05-01-2006 12:43 AM
+1 for RUR-PLE. Inspired by this blog I checked it out and my 8yo has just spent most of the weekend on it. It needed a small patch to run on linux.
Armando wrote re: Teaching my kids to program
on 05-25-2006 9:28 AM
+1: Top in your list is not the language, but what and how to teach them
+1: python

Here is one successful parent who mixed those two concepts well:

http://davidbau.com/archives/2005/07/29/haaarg_world.html
Jeffrey Bolden wrote re: Teaching my kids to program
on 05-27-2006 6:01 PM
I just thought I'd mention there is a pretty good list on wikipedia:
http://en.wikipedia.org/wiki/Educational_programming_language

As a personal note. Logo I think is the way to go. The language itself teaches a tremendous number of concepts and there is a very wide range of freely available instructional materials. Alice is also really fun. I'd stay away from the adult languages its much harder to find good instruction which is age appropriate.
Sakhi wrote re: Teaching my kids to program
on 06-06-2006 12:02 PM
Hi All,

I started teaching my 7yr. old daughter LOGO.
And by browsing net came to know that when a kid is comfortable with Logo he/she can learn QBASIC then C#, VB,etc.
Do u guys think it is fine ?
If yes,Then can u tell me that to what extent of knowledege is enough to start with.
Right now she is able to build house,etc with Logo. Should one has to be clear about the concepts ?

Please clarify my doubts.
Its summer vaccation for her now and I really want her to learn something and have fun at the same time, instead of wasting time infront of T.V.

Thanx
Sakhi.
bob sandberg wrote re: Teaching my kids to program
on 06-27-2006 7:43 PM
Very interesting comments by everybody.

One topic that isn't covered here, is what do you teach them using any of these languages?

What is a good Curriculum that is fun? Are there websites that suggest projects or games to develop.

Most language tutorials are focussed on the adult learner and not on the 10-15 year old kid.

I've tried Gamemaker and it has some nice tutorials and my kids played with this for awhile. Now, I'd like to try some projects that are not video games, thus I am looking for projects interesting for kids, but not necessarily video games.

Jody Weissler wrote re: Teaching my kids to program
on 07-16-2006 4:23 PM
I have created a learn to program section on my educational website Teachtopia.

Here is the direct link to that section..


http://teachtopia.com/programming.html




Jody Weissler wrote re: Teaching my kids to program
on 07-16-2006 4:23 PM
I have created a learn to program section on my educational website Teachtopia.

Here is the direct link to that section..


http://teachtopia.com/programming.html




Trintith wrote re: Teaching my kids to program
on 08-04-2006 6:49 AM
(yeah, i know this topic is dead, but I think im adding to it...)

I'm 12 and I started c++ a year ago, the basics arn't that hard to learn.
If your intressted, the book "C++ Without Fear" is great.

http://www.amazon.com/gp/product/0321246950/002-2113139-1932048?v=glance&n=283155

When I was 8 I learned QBasic; the current equivalent is probebly Visual basic.

Visual studios express edition dosnt cost anything

http://msdn.microsoft.com/vstudio/express/default.aspx

trintith@gmail.com
erde wrote re: Teaching my kids to program
on 08-17-2006 11:47 AM
And what do you learn? And more interesting: Do your kids want to learn it? ;)
Frank wrote KPL
on 09-08-2006 10:35 AM
KPL is a good start-up language for kids.
http://msdn.microsoft.com/coding4fun/coolapplications/kpl/default.aspx
mc wrote re: Teaching my kids to program
on 09-13-2006 2:36 AM
Could you please let me know what was your decisions and experiance ?
I have a 9 year old boy who had expressed some interest in programming, and although I am computing professional - I have dificulties in deciding how to start

Many thanks,
maria
Alexander Repenning wrote re: Teaching my kids to program
on 09-13-2006 7:14 AM
Try AgentSheets. It is the only educational programming language that is simple enough that elementary school kids can make simple games such as Frogger in about an hour but then, gradually, can learn to make sophisticated games such as the Sims later on.

AgentSheets is used in middle, high schools, universities (ugrad, grad), computer clubs, and science programs. Find some example games here: http://www.cs.colorado.edu/~ralex/courses/gamelet2006/gamelets/Space%20Invaders/index.html

full disclosure: I am the creator of AgentSheets. The first version of AgentSheets introduced the graphical rewrite rules later adopted by Apple's Cocoa/KidSim/Creator. Our (and others) research concluded that the graphical rewrite rules were simply not powerful enough to allow the students to make sophisticated games.
sabeen wrote re: Teaching my kids to program
on 09-27-2006 12:07 AM
i am downloading the kpl
Jon Schwartz wrote re: Teaching my kids to program
on 09-27-2006 6:28 AM
It's great that this blog entry is staying up, getting traffic, getting readers, and getting comments! I'm one of the KPL guys, and I thought I should update everyone that we are days from releasing our followup to KPL, called Phrogram, which is designed to be even better for beginner than KPL was. There's been a lot of buzz around both our products since David Brin's essay "Why Johnny Can't Code." I blogged about his essay, and am glad to report that he replied to my blog with some good followup information about his essay, in response to the abundant feedback about it. I've linked my blog entry at the URL about if you're interested in hearing what David had to say. If you haven't read David's essay, you can surf to it and to a bunch of the web traffic about it from there.
asqalan ahmed wrote re: Teaching my kids to program aboutas he is seven year age boy
on 09-30-2006 6:17 PM
this is very effective 0programme 4 my kid so i thought to have a contact through mail.i ll be thankfull for this kindness.
W.L. wrote re: Teaching my kids to program
on 01-07-2007 7:26 AM
A time ago I have came across with Baltie (www.baltie.com). He's a small magican for teaching programming not by writing text-code but using images as commands. We have started using it in our school 3 years ago and we have a huge response - (see what my son has done http://www.sgp.cz/cz/video/4BaltiesMsg.wmv).
Brian Adkins wrote re: Teaching my kids to program
on 03-03-2007 3:38 PM
Don, I'll echo a previous commenter's request for an update of what you've found.

It's my impression that getting desirable results quickly (likely graphical) is an important factor.

I'm coming from a BASIC -> Assembler -> C -> C++ -> Java -> Ruby background and have recently begun learning Lisp. The fundamental nature of Lisp really appeals to me and I think the lack of arbitrary syntax could be a huge win with kids if packaged in a "suitable" form. I'll check out DrScheme to that end.

Dynamically typed languages would seem to be a important to avoid getting bogged down in explaining subtle differences in types vs. dealing with the problem to be solved.

Interactive development instead of a compile-link-run cycle would seem obvious.

I also checked out Squeak (after learning about Seaside) and was extremely disappointed with the development environment. It looked cool in a retro way, but it's just not for me.

Share your current thoughts if you're willing.
Nagesh wrote re: Teaching my kids to program
on 04-28-2007 11:45 PM
Wow! Firstly, I think we all can start a "Programmer Dads & Moms" forum! We all share a passion for programming and love for our children.

The question as to "How to introduced our children to programming" is a very worthy question to research. A formal study would be appropriate.

We can think about in the following lines in our pursuit: (1) What age is appropriate to introduce children to programming. (2) Profile our children - Visual / Text oriented? Analytical / Artistic? (3) Active (hyper!) / Steady? (4) Do they do well in Match/ Arts? (5) What does their school has planned for them?
(6) How much time do we really have to spend with them. So that they won't get frustrated and give up.

I also think learning to programming will boost their confidence. Can be particularity beneficial to physically challenged children.

I am sorry If I am digression.. I learn my first programming language almost on my own.. that was GW Basic.
Scott Hanselman's Computer Zen wrote Teaching Children and Kids to Program the Old School Way
on 06-15-2007 5:37 PM
yadab wrote re: Teaching my kids to program
on 06-25-2007 5:45 PM
this is for personal purpose
Brian wrote re: Teaching my kids to program
on 07-27-2007 7:34 PM
The ultimate question:

What are they going to create?

My 8 year old son and I created a game using XNA (C#). Obviously he couldn't do it on his own, but that wasn't the point. It is a simple game (Dodge Ball). We keep enhancing it. He acted as the customer (very unreasonable at times, but as he saw progress we worked through it) and student during the process. Actually I may have learned more than he did about dealing with customers and simplifying the API we eventually created (I started treating like a simple UI for him to use). It was very simple to create using C# and studio (structured, typed and intellisenced) we were not shooting for pure OO abstractions, just enough.

I found the following important:
- Having an achievable goal your child formulates (the customer)
- Break it into phases were you and he/she see results early on
- Build something that can be extended and improved on
- Do all of the research off-line to limit the frustration (let them know you are doing it so they realize that they must read to succeed?)
- Make sure he/she sees his ideas not yours. (He can up with the idea and created the players and we scanned them in. He wants to give a version of the game to his classmates on his birthday)
Dave wrote re: Teaching my kids to program
on 08-15-2007 11:08 AM
Do Flash and read tutorials from cartoonsmart.com(their tutorials are quicktimes)
and if you want free ones go to Tutorialized.com.
Arvid wrote re: Teaching my kids to program
on 08-23-2007 1:48 PM
To start simple, consider RoboMind. It's freely available at www.robomind.net. This environment allows kids to program their own robot.
Omar wrote re: Teaching my kids to program
on 02-20-2008 2:29 PM
Try python! You won't need to close blocks, nor line sentences
Thomas wrote re: Teaching my kids to program
on 04-07-2008 2:14 AM
You might want to try Scratch (http://scratch.mit.edu/). Based on Smalltalk and Squeak, geared for educating children, providing instant visual feedback, big community, fun to work with :)
vodcoder wrote re: Teaching my kids to program
on 07-03-2008 12:40 AM

I think the best way to teach kids how to program is to present them video tutorials. They are fun, it's harder to become boring than an article or a book and they can give you fast results. My favourites are those from http://codervods.com

vBharat.com » Teaching my kids to program wrote From vBharat.com &#187; Teaching my kids to program
on 08-08-2008 7:33 PM

One of my motivations for wanting to learn Ruby (or relearn Smalltalk) was for my kids. I have no intention of having any of my kids grow up to program for a living - this is just about making them more complete human beings. To that end, I want my kids

credit report repair wrote credit report repair
on 09-14-2009 1:42 AM

This is a great blog. I have to put a bookmark on it and come back again!

alabama credit repair wrote alabama credit repair
on 01-03-2010 7:04 PM

I have to put a bookmark on this website!

Add a Comment

(required)  
(optional)
(required)  
Remember Me?