Scott Hanselman

Teaching Children and Kids to Program the Old School Way

June 15, '07 Comments [25] Posted in Learning .NET | Musings | Programming
Sponsored By

computerolympicsSee that book on the right there? That's how I learned to program. This book was THE book in 1984. I typed in the whole book on a Commodore 64. 

Originally, there was a meeting between the principal and my 5th grade teacher, Mrs. Hill. They said I was "at risk." I was probably going to be voted "Most Likely to Be Convicted of a White Collar Crime." Anyway, they set it up so I could sneak an Apple II out of the school as long as it was back before Monday morning. After it was clear I'd found my (or "a") calling, Dad decided to get a C64 for me. My dad sold his Van to get me that C64.

You can spend some time reliving your C64 by using the in-browser Java-based C64 Emulator (and games) over at DreamFabric, or by downloading a C64 emulator from Per Håkan Sundell.

I wonder if a book like this could hold a 10 year old's attention like it did for me. I burned weekend after weekend typing in Hex Codes from Compute! Magazine. I paid other kids on the block to read them to me so I could type them faster.

CCS64 V3.2

While I'd love for Z to be a little more well-rounded than I, it couldn't hurt to teach him at least the logic around general purpose programming.

Will younger kids "in the future" program by scripting in Second Life? Don Box asked this question two years ago and came up with answers like, Teach them Lisp, or ML, or Smalltalk or Ruby. I'm not sure what he decided...Don?

Should kids learn a "real" language like Lisp? Or an artificially Kiddy language like Toontalk? Possibly a world like Scratch (from MIT's Lifelong Kindergarten)?

Should kids have their own programming environment as an introduction to the world of engineering? Mark Verber considered these languages for his 10 year old and has a great write up on research he did:

  • Logo: good for simple projects (and younger kids). Once scratch is released, use it instead.
  • Squeak (smalltalk) for older kids whose focus is building artifacts more than programming
  • Scheme for kids focusing on learning computer science
  • Java, Python, or KPL for kids that want a quick path to vocational program

Perhaps what's needed to help Johnny learn to program is a connection to the physical world like Mindstorms Kits or a Viper Robot and PowerShell (video) or the creation of games using tools like BlitzBasic.  Maybe Supercard (remember Hypercard?)

In the end, I suppose it depends on the kid's personality and natural thirst for learning. I plan to let Z know there is a nearly infinite number of cool things to do. The trick will be explaining it without overwhelming him (or myself.)

Technorati Tags: , , , ,

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by ORCS Web
Friday, June 15, 2007 11:10:59 PM UTC
Link: Leopard Progamming Language
Link: Leopard blog

A guy I know (Brandon Watts, I'll hire him someday I swear) wrote Leopard (when he was 14 years old - he's 20 now and it was recently updated). It's been used in schools to introduce kids to the basic concept sof programmimg. It's cool and it's practical and can be fun to learn with. You can do pretty much whatever you like with it.

greg
Friday, June 15, 2007 11:12:08 PM UTC
You may be interested to know that one of our fellow Corillianites (Krishnan) hosts a Lego Mindstorms group in our Campus Center. They happened to be meeting at the same time as our .NET user group this past Wednesday; he had a large group of many very enthusiastic kids and their parents. Z may still be a bit young, but give him a year or two and he may really enjoy it!
Friday, June 15, 2007 11:43:19 PM UTC
There is also http://www.kidsprogramminglanguage.com/

heh though what I need is more of a teachers guide...i'm a horrible teacher.
mark
Saturday, June 16, 2007 12:26:38 AM UTC
Hey Scott, thought this was applicable:

http://hacketyhack.net/

It's an intro to Ruby for kids by one of the more eccentric members of the Ruby community.
Greg
Saturday, June 16, 2007 1:25:18 AM UTC
I recently worked on an educational Flash application designed to help students prepare for mandatory tests in the state of Florida. One of the developers on the team googled some of the ActionScript from a previous iteration of the app, and found a forum posting where some 10th graders were decompiling the swfs. They were hoping to get answers to the test.
So that's one way the kids are learning...
Saturday, June 16, 2007 2:44:59 AM UTC
I love all these languages but why do we seem to be afraid to teach kids C# or VB.NET? It's a mystery to me.
Saturday, June 16, 2007 5:01:22 AM UTC
Or we could just let them be creative and play with hotwheels outside in the dirt... or let them play with other kids in the sandbox...

Not every kid wants to be a developer ;)
Saturday, June 16, 2007 5:38:12 AM UTC
It's amazing how similar my experience was. During history class I was allowed to be in the back programming an Apple II Basic program to quiz fellow students with history questions. At home I also started out with a VIC-20 and then a 64. The seed was planted and the logic behind BASIC is what led to my career today. I think old school BASIC is a great way to teach programming and maybe some day my 10-month old will give it a try.
Saturday, June 16, 2007 3:42:31 PM UTC
I had a similar experience as John. I was fortunate enough to have an Apple //e at home and started my programming career with basic and prodos. I actually have, don't know if they work, my original floppies with my programs on them. No computer that will read them, but I keep them to look at the labels once in a while. I believe teaching the very basics of programming to someone is essential. Similarly teaching MS-DOS to a computer tech. A lot of tech's I know don't know dos commands and it cripples them at times. I also agree with Jake that kids should learn how to use their motor skills, not just their typing and mouse skills. I have three small children and it's tough at times keeping them off the video games and/or computers but it's worth the effort.
Saturday, June 16, 2007 7:00:00 PM UTC
Well now you've gone and done it ! Taking me down memory lane.

I also cut my teeth on the c64. I also wrote some programs for the Compute magazine: Sprint 3 upgrade, La Basic, Calculease, TagIt and some more. And yes, I typed in many many pages of hex from the magazine, Speedscript, Metabasic, bassem being some of my own favorites.

And now I too wonder where to. get my 10 year old started into coding. He has interest and messes around with VB6 - but the total immersion you could get with C64 - where you literally knew what each memory address in the machine did - is so hard to come by the machine today buried under so many layers that I wonder how these kids will ever get a sense of what's really happening when they write a line of code in dotNET.
Saturday, June 16, 2007 11:15:32 PM UTC
Huh, that's about me.

My journey into code world started in 2003, when I was 13 years old. I owned PC for 2 years back then, but in 2003 I got broadband connection to internet. It was expensive, like 10 bucks for 50Mb. I found local forum, there was Programming sub forum, which had some sort of mystic aura for me.
Like all (isn't that true?) early adopters (in terms of age) I wanted to be game developer. They were like rock stars to me.

So I created topic in that forum - "I want to be a programmer. Where to start?". Sea of possibilities. If you scare kid with overcomplicated technology or bad guiding book, he will throw away idea becoming software rock star. I was lucky. One wise dude recommended me Deitel's "C++ Hot to program" book. I found book on the net, but reading it on crappy old CRT screen was pain in arse, eyes and stomach. Parents bought me that book on summer vacation, I spend whole summer with it. Good 'ole geeky days... xD

I turned 14, I knew some C++, some C, bit of STL, and most important, I learned the right way to think about computers, *epic voice* machine thinking xD. I wanted to be l33t tr00 software hero, so I decided to learn asm. I tried 3 or 4 times but not managed to do this, i learned how computer works in very low level, but writing code in mov ax, dx wasn't right to me. I threw idea writing demos (demoscene) in asm, but still wanted to be game programmer.

I bought LaMothe's Programming Games on Windows book, wrote simple arcanoid clone, but later stuff overwhelmed me - there was to much complicated math, like matrices, vectors etc, high school math. (I was 15 a.t.m.) I switched into high level stuff. I found field that just feels right to me.

Now I'm 17 years old, I work as .NET programmer, and I'm sure about my purpose xD.

So right attitude about coding is the key part of learning something. Teach your kids .NET or Ruby, and watch him making money. xD
Sunday, June 17, 2007 1:22:19 AM UTC
KPL has been renamed to Phrogram, and they now have a company around it: http://phrogram.com

It runs on .NET Framework 2.0 and has support for DirectX for 3D, controllers, etc.
Sunday, June 17, 2007 1:37:31 AM UTC
I just wanted to point out that Blitz Basic is a complete and quite mature programming language, based on BASIC but with added support for OOP constructs like classes and inheritance. Classifying it as a "tool" is using the wrong term IMHO. Cheers!
Gorab Brakut
Sunday, June 17, 2007 3:27:48 PM UTC
You should consider a programming environment dedicated to robotics (simulated or real, serious or fun, children to young adults) presented in the CeeBot products (http://www.ceebot.com/). The language is Java-esque (or C# like if you prefer).

Pierre, author of http://www.creativedocs.net/
Pierre Arnaud
Monday, June 18, 2007 1:07:00 PM UTC
There is also the Microsoft Robotics Studio if you want to get into the robotics programming.

Of course, I am partial to the LEGO MINDSTORMS stuff myself. See my homepage link. :)
Monday, June 18, 2007 5:02:36 PM UTC
I still have a few issues of Compute! and Compute's Gazette in storage. It's fun to look at those old magazines and re-read the articles and especially the ads. There is a full 2-page ad for the Apple IIe in one of the magazines.

I too learned on the VIC-20 then the C64. I had 4 semesters of programming in high school (graduated in 1986) I did not have to take a foreign language (apparently Fortran and Pascal qualified).

I can't imagine how my kids will take to programming (assuming they even want to). When I was a kid, simply having access to computer (let alone owning one) was kind of rare and left to the geeks. Programming them was the coolest thing you could do with them.

Today, computers are pretty much taken for granted. You HAVE to be able to know how to use one to get by. It is not a hobby anymore, it's a life skill (not coding but just knowing your basic way around).

Will kids see the computer any different that we saw the TV when we were growing up?
Rick Stone
Monday, June 18, 2007 5:22:04 PM UTC
Seems like many of us all started the same way back in the 80s. I always wanted a C64, but my parents got us an Atari 400. I moved through TRS-80s, TI-99s and Apple IIe's in school.

The book that got me started was Atari Basic from John Wiley & Sons. Funny - nearly 30 years later I'm at John Wiley & Sons working on programming titles!
Monday, June 18, 2007 6:16:27 PM UTC
To me the most important question is which language gives the most immediate results. Preferably in graphical form. This reinforces the cause-and-effect of typing this text will make that happen. As an example we had a 2nd grade summer school class called "computer programming", but which was really just painting pixels on an Apple IIe. But it didn't matter: I could use this crazy machine to make pictures of spaceships. I was hooked!
Monday, June 18, 2007 8:45:48 PM UTC
David Bau has a really nice series of posts on his blog where he describes what he did when his 6-year-old son asked how he could write his own computer game. The first post in the series is here:

http://davidbau.com/archives/2005/07/27/a_programming_question.html
Monday, June 18, 2007 10:12:09 PM UTC
Good stuff Scott.

For what it's worth, I had a lot of fun with my 7 year old by going through the 'how the computer brain works' thing by first staying well away from the computer for a while.

What we did was design a simple game using bits of paper and some boxes. Lots of drawing and cutting out. She picked it up pretty fast but we had to spend the time skirting the fundamentals of 'variable' (boxes with names on), loops (we got a wheel from a bike) and even if/then decisions (we made a sort of physical 'decision tree' using a foosball table and playdoh. Once we had those covered then it was a case of 'what can the computer already do for me?' to fill in the gaps (the 'library').

I know the description sounds a bit crazy, but we had a blast, which is the key (IMO).

Now we throw things around onscreen using very simple bits of KPL (always in a pair-programming style!), but my real message is that the physical interaction of enjoying covering the basics (groan!) is what worked with me so far.

(Plus I have a 5 year old to try Iteration 2 out on next, and I2 is *always* better than I1 eh?)
Monday, June 18, 2007 10:16:40 PM UTC
You can start the kids on "computational thinking" long before they might be able to sit and write code. Here's a good podcast by Jonathan Udell with Jeannette Wing, head of CS at CMU who is apparently pushing a vision of teaching computational thinking to everyone. They don't cover the topic of very young children much, but agree that they would like to.

A couple years ago my three year old had fun learning the concept of recursion (a hint of it anyway). First we defined him in terms of himself. What is Max? Max! Later he would recognize nested structures, like a toy ball that had a toy ball inside it that had a toy ball inside it and he would announce that it was recursive. Perhaps tonight I'll try a for loop for brushing his teeth, but please no one tell him that you can "break" out of a loop.
David Ball
Tuesday, June 19, 2007 4:35:51 AM UTC
You should check out Popfly. Getting kids used to the idea of programming and 'creating stuff' on their computer is one of the core ideas behind what we're doing
Tuesday, June 19, 2007 7:05:48 AM UTC
WOW, reminds me of the good old days, even I started with BASIC actually GW-BASIC on an x86 in an obscure computer training institute called IndoGerman Computer Institute in Ghatkopar, Bombay back in 1994.

The best part was to write graphics applications and it was so easy, just call the command "SCREEN 1" or was it SCREEN 0.

In comparison initgraph in c later on was a real pain and never got it to initialize BGI correctly.

In fact I would say that BASIC programming was the best way to learn the art programming.

But in comparison now BASIC evolving (BASIC, GW-BASIC, QUICKBASIC, Visual Basic 4/5/6 ) into Visual Basic .NET it pales. C# and java is the way to go now.
Binoj Antony
Sunday, June 24, 2007 2:30:51 AM UTC
If you want to teach kids (like me for instance, although I learnt in Visual Basic, VB.Net and later C#, before taking a look at C++) programming at that basic, basic level, just get them a graphics calculator, and tell them to write programs on that.
Friday, July 13, 2007 3:30:39 PM UTC
I am 13 and just started programming this year, I already tought myself VB and C# which are fairly simple to me, I am trying to learn C++ but I dont get it at all, I am gonna try, but anyway. I think we love learning some of the more complex languages, VB is very simple and easy to follow, there are a lot of resources to teach kids VB and C#, go to Microsoft's site and search for, "VB for Very Bright Kids" or "C# For Sharp Kids" I read both of those and they are great, the target age is 12-16 and they teach both languages from scratch very well.

Email me at geniusdog254@gmail.com if you know a good resource to help me learn C++, thanks in advance.
Geniusdog254
Comments are closed.

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.