Teaching Children and Kids to Program the Old School Way
See 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.
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.)
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.
About Newsletter
heh though what I need is more of a teachers guide...i'm a horrible teacher.
http://hacketyhack.net/
It's an intro to Ruby for kids by one of the more eccentric members of the Ruby community.
So that's one way the kids are learning...
Not every kid wants to be a developer ;)
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.
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
It runs on .NET Framework 2.0 and has support for DirectX for 3D, controllers, etc.
Pierre, author of http://www.creativedocs.net/
Of course, I am partial to the LEGO MINDSTORMS stuff myself. See my homepage link. :)
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?
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!
http://davidbau.com/archives/2005/07/27/a_programming_question.html
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?)
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.
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.
Email me at geniusdog254@gmail.com if you know a good resource to help me learn C++, thanks in advance.
Comments are closed.
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