Ask Slashdot: Best Book Or Game To Introduce Kids To Programming? 246
New submitter connorblack writes "My very gifted nephew is about to turn nine this month and I would love to get him some sort of fun, engaging book or game to introduce him to the basic concepts of programming. I have a feeling if approached correctly he would absolutely devour the subject (he is already working through mathematics at an 8th grade level). What I first was looking at were the Lego Mindstorm programmable robots- which would have been perfect, if only they weren't around 300 dollars... So if there's anything similar (or completely new!) you've either heard praise about or used yourself with your kids, it would be great to get a recommendation. Also if possible I would want to stick to an under 100 dollar budget."
Would a nine year old be able to follow The Little Schemer?
$300 is a bargain (Score:3, Insightful)
Isn't your nephew's future worth the price of a couple days at Disneyland?
Scratch (Score:3, Informative)
My kids started using Scratch when he was 6 and has written two player race car games and other stuff with it.
Re: (Score:2)
I would 2nd this. It's a good, easy way to start off. My kids started leaning by modifying several existing games that other people had uploaded and now create their own. The older one went on to learn Java with his friend over the summer.
Re:Scratch (Score:4, Funny)
The older one went on to learn Java with his friend over the summer.
My condolences. :(
Minecraft (Score:5, Informative)
Google for Redstone Circuits and go to town. There's that running EE joke that you can build any logic circuit with nothing but NOT gates. Redstone pretty much gives you exactly that.
For real programming, maybe just throw them at http://learnpython.org/ [learnpython.org] and give them an ipython shell to play with until they're ready to start programming a dungeonmaster / chatbot for their minecraft server. That's my plan with my kids (10 & 7) at the moment.
Re: (Score:3)
Defender. Working out all the details of how that worked kept my mind busy for years. I finally wrote a very close clone of it 27 years later, (Though I did quite a few other things in between.)
+1 for Python (Score:5, Interesting)
OSS Retort (Score:2)
Re: (Score:2)
Or you could use MIT's Scratch [mit.edu] programming environment and not get yourself icky with MS.
Also, if they like Scratch, they can try Stencyl [stencyl.com]. It's a game engine that uses Scratch as the programming language. Caveat: my nephew couldn't work through the tutorial on his own and, unfortunately, too much distance has prevented me from working through it with him. Caveat 2: their downloadable code modules are a bit buggy. The ones I tried weren't completely broken though, so it's good for someone who's eager to learn to code and debug.
Re: (Score:2)
Re: (Score:2)
http://0x10c.com/ [0x10c.com]
Not yet released, but looks quite cool.
Re:Minecraft (Score:4, Funny)
http://0x10c.com/ [0x10c.com]
Not yet released, but looks quite cool.
Learn to program from a guy who puts 1 cycle Division instructions in imaginary CPUs. What could possibly go wrong? :)
Re: (Score:2)
It's even funnier than that, read his Twitter feed, he keeps posting his programming whoospies he discovers while programming 0x10c. I understand now why Minecraft was in such a terrible state.
Re:Minecraft (Score:5, Informative)
Seriously, redstone is crazy stuff.
If you want something a bit more abstract though, why not something like SpaceChem? It's essentially programming disguised as a game, from what I can tell. You have to create algorithms graphically to solve a problem. It's pretty simple as far as the actual "programming" goes, but it gets people thinking along those lines, and it'd let you know if there might be some interest in those sorts of activities, perhaps.
spacechem (Score:2)
Re: (Score:2)
Re: (Score:2)
There's that running EE joke that you can build any logic circuit with nothing but NOT gates.
It's not a joke. That's what I did for the first three years of my career.
Re: (Score:2)
Making you try to build anything interesting with NOT gates would be a pretty good joke, really. Especially if they made you do it for three years!
Now if they had only let you use NOR gates...
Re: (Score:2)
Making you try to build anything interesting with NOT gates would be a pretty good joke, really. Especially if they made you do it for three years!
Now if they had only let you use NOR gates...
The SBP9900 (a bipolar, radiation-hardened version of the TMS9900 16-bit microprocessor) was designed in 1976 using nothing but inverters. Pretty interesting, I would say, considering there were no other 16-bit microprocessors on the market at that time.
Re: (Score:2)
Ok, if you want to cheat and claim two I2L inverters wired together isn't creating an implicit AND gate, sure.... :)
Re:Minecraft (Score:5, Informative)
Another good option is Arduino. Easy to teach basic structure while wiring up lights and buzzers and stuff to make it fun.
Re: (Score:3)
An amazing Minecraft circuit (Score:3)
Re: (Score:3)
It's NAND gates (or NOR gates) that are functionally complete. And I'm not sure it's a running joke rather than an important mathematical property. Well important is a relative term...
Re: (Score:3)
People keep calling Redstone Torches NOT Gates because they forget that they're actually 5-input NOR gates (4 sides plus bottom, with top as an output)
Python, Panda3d, MyGameFast (Score:2, Interesting)
How about you first show him this:
http://www.mygamefast.com/
Then you show him the ORiley Python Book.
GORILLA.BAS (Score:4, Interesting)
Re: (Score:2)
modding video games (Score:4, Funny)
Is there a video game he is particularly fond of?
Games that are easy to hack and mod are a great start - they are tweaking something they already love. I wasted many hours of my elementary school days tweaking the rules.ini file to make command and conquer's AI a more capable opponent. That lead to scripting one player levels in an attempt to make my own campaign. That lead to...nothing at all....but it might be a start.
The tools available today seem a lot more complex, but also a lot more open than they were when I was young.
Good luck.
Re: (Score:2)
We have a winner. There has to be something they themselves want to accomplish by programming. Get that sorted and get out of the way.
I used to have books of (printed!) computer game programs that I would type into my Atari 800XL, which of course led to writing my own once I knew how they worked, and friends with the same interests playing my games and me playing theirs. There was a 1986 edition of Scientific American which had a Mandelbrot set on the cover, and the algorithm inside, and I remember when the
Code Monster (Score:5, Informative)
Check out Code Monster: http://www.crunchzilla.com/code-monster [crunchzilla.com]
It's a game-like site that teaches javascript programming.
Scratch (Score:5, Informative)
Re: (Score:2)
Mod parent up. Free, fun, community, easy, challenging.
Re: (Score:2, Interesting)
+1 for Scratch, my son loved that at age 8. Later he tried Alice but didn't like it as much. Several years ago we got him an excellent kid-oriented Python book, "Hello World! Computer Programming for Kids and Other Beginners" by Warren D. Sande and Carter Sande (http://www.manning.com/sande/), highly recommended. Gets into graphics via Pygame.
Re: (Score:2)
Scratch, visual multimedia programming system from MIT. http://scratch.mit.edu/ [mit.edu]
I'm going to repeat my post from above. If they like Scratch, consider Stencyl [stencyl.com]. It's a game engine that uses something like Scratch as the programming language. Caveat: my nephew couldn't work through the tutorial on his own and, unfortunately, too much distance has prevented me from working through it with him (there are minor omissions in the tutorial). Caveat 2: their downloadable code modules are a bit buggy. The ones I tried weren't completely broken though, so it's good for someone who's eager to lear
Kojo (Score:2)
ZZT (Score:2)
ZZT is how I got my start. It is a very old game and of course the "graphics" are terrible, but the game is solid and it's fun. Once you get a little way in you'll come across levels such as The Bank. The Bank is an amazing room (for a ten year old) and for me the concept of programming soon clicked from that experience. In The Bank, you see how you can combine pushers, blocks, and sliders to create a really cool combo lock mechanism. Then, as I recall, there is a little character with some basic progr
Scratch by MIT (Score:5, Informative)
http://scratch.mit.edu/ [mit.edu]
It is what has gotten my 5 year old engaged.
SpaceChem (Score:5, Informative)
This blog posting seems apropos:
http://hostilefork.com/2012/03/06/a-word-on-programming-education-and-spacechem/ [hostilefork.com]
Get the kid something "bigger" than programming. (Score:3, Interesting)
Get him something larger in scope than programming. Look into astrophysics or biology or botany sciences, or aeronautics, mechanical engineering, chemical engineering, materials sciences, anything engineering related or high math or high tech, but not programming.
Think about promoting something where they seek interests and career lines that might work for themselves or create their own corporation.
If you want to shoot for an interest leading to most likely employment, get him something for marketing and business. Entrepreneurship as well.
I don't recommend these as careers for everyone, but there will be lots of need.
Alternatively, get him a book on how things are actually made, not how they say they are on How It's Made or Mythbusters.
Something with a lot of good photos of Injection molding, machining, forging, casting, metal injection molding, powdered metallurgy, 3D printing and Selective Laser Sintering, Fused Deposition Modeling, etc.
Re: (Score:2, Insightful)
As someone who's been into programming since grade 4 (good lord.... 28 years), I can't THINK of anything larger in scope than programming in terms of any of the things you mention:
Programming teaches logic, patience, critical thinking, planning, and attention to detail.Programming teaches you to examine any given topic (whatever you're most into) in a systematic, rigorous way. It teaches you to look at how any given thing works and to try to analyze it and break it down into understandable components.
Progra
Re: (Score:3)
Learning a programming language is just as useful as learning a foreign language. It teaches kids how to communicate with computers. Programming by itself may be a questionable field to get into as a life long career path, but as a skillset it can benefit many professions. Are there any sciences, engineering or math career paths that would not benefit from the ability to let computers do the repetetive work?
COLOBOT (Score:2)
It's an educational game involving programming robots. You're an astronaut with a mission to explore space, and you have a variety of robots at your disposal. You can control them individually, or more effectively, you're supposed to program them to be automated. Sort of third-person FPS with RTS elements, where you code your own units. It uses its own somewhat OOP language, and is just fun with variety of missions.
Considering how old it is it's kinda still expensive, but give it a go (there should be a dem
Get him an Creators Club membership for Xbox360! (Score:2, Interesting)
The main development language is C# for using XNA. Microsoft gives you a GREAT example driven e-book (and free tutorials are everywhere), and all the tools FOR FREE. He can program straight to PC (and Xbox if you buy the $99 a year membership), and use a controller for interface for either. It's pretty easy to pick up, as it explains just about everything. I've been programming since Kaypro][ days (when I was 6), and to get started, you really don't have to go much past if/then, basic integer and boolean va
GameMaker (Score:4, Interesting)
Without hesitation, I'd go with GameMaker along with the book The Game Maker's Apprentice, and followed by The Game Maker's Companion. The first book includes an older version of the GameMaker software which is all that will be needed to complete the exercises. If your child likes the process, move onto the second book which covers more advanced concepts. Those books, along with either GameMaker 8.1 or GameMaker: Studio should your child want to move onto more current versions, will all fit within your $100 budget, and it will only cost you $20 or so to get started.
The books are excellent learning tools and the GameMaker software itself was originally created by co-author and Utrecht University professor Mark Overmars to teach programming. It's a great way to get ones feet wet and very good games can be created with it if one is willing to put in the effort. If you child wants to move on to more popular languages, GameMaker will provide them an excellent foundation for learning them.
Adventure games!! (Score:5, Insightful)
I seriously attribute my love for adventure games to help me refine my troubleshooting skills and drive to "find the answer".
I believe that it's troubleshooting and the drive to find the answer that makes someone stand out in the work place, whether it's programming or anything else.
I played a lot of Kings Quest, The Secret of Monkey Island, Space Quest, Myst, etc.
RoboRally (Score:5, Interesting)
Richard Garfield, creator of Magic the Gathering, didn't win awards for it for nothing.
Race your robot against your opponents to get to the goal first. Program your robot figurine for each round selecting and ordering basic movement cards (forward, forward x2, backwards, turn left, right, u-turn) using a larger set. If you are damaged, your set of cards to choose from reduces until your registers you've programmed lock into place. Teaches how to think ahead and very basic programming skills. My five-year-old has been slowly learning how to play by laying out cards in order and having me beep-boop the robot into horrible predicaments he programs out. After two games, he seems to have gotten the hang of it and is able to guide the bot to the goal without falling into pits. Soon he will be up against me and my lasers; then he'll know true pain.
Robot Odyssey (or similar)! (Score:4, Informative)
Way back when, at that age, I first got interested in programming via the game Robot Odyssey (http://en.wikipedia.org/wiki/Robot_Odyssey)
According to the Wikipedia page there are modern day clones and derivatives:
"The engine for the game was written by Warren Robinett, and variants of it were used in many of The Learning Company's graphical adventure games of the time, including Rocky's Boots, Gertrude's Secrets, Gertrude's Puzzles, and Think Quick!, all of which are similar but easier logic puzzle games. The gameplay and visual design were derived from Robinett's influential Atari 2600 video game, Adventure.
Carnage Heart involves programming mechas that then fight without any user input.
Cognitoy's MindRover is a relatively recent game which is similar in spirit to Robot Odyssey, but uses different programming concepts in its gameplay.
ChipWits by Doug Sharp and Mike Johnston, a game for the Apple II, Macintosh, and Commodore 64 computers is similar in both theme and implementation, although the interface to program your robot differed.
Epsitec Games created Colobot and Ceebot in recent years for Windows machines which are in many ways spiritual successors to Robot Odyssey. In these games the player program machines to accomplish puzzle tasks. Instead of using logic flops, switches, etc., these two games instead teach the player the fundamentals of object oriented programming like Java, C++, or C#.
One Girl One Laptop productions created a spiritual successor called Gate which uses the same digital logic puzzles as Robot Odyssey.
There is also a clone written in Java, Droidquest, which contains all of the original levels and an additional secret level."
TI-86 Basic (Score:3, Informative)
My 6 year old has been asking me to teach him to program. He played with kturtle for a little while, but turning is relative to the current position and in degrees, and he always ends up distracted by games and videos.
Recently I've started teaching him TI-86 Basic. He is very excited about printing things to the screen.
A couple of pros:
* It's self contained with no distractions
* Commands are all on the screen so you don't have to memorize them
* It's one place where Basic is still useful
* IO is simple
The other TI calculators are probably just as good, but I had the 86 in my closet.
What about The Incredible Machine? (Score:4, Interesting)
You (Score:5, Informative)
Mentors are the most significant educational source. Match wits with the kid. Say "look what I can do, and here's how I did it". Then challenge the kid to do something similar himself. Build from "Hello, world" to a text adventure, or an animation, or a video game, or whatever else he shows some talent in. First just spend time with the kid, and let the programming interest grow naturally. If it doesn't, don't force it.
Best game? (Score:3)
Mindrover (Score:2)
Logo (Score:3)
Will get him ready for the computer skills needed to learn the ideas that keep many big US companies old apps running.
Re: (Score:2)
Also, there are plenty of free Logo/turtle graphics programs available for android devices. You can set your kid up with a 7-inch tablet, which has all the power of the desktop computers we had back in the day along with the portability of our handheld calculators.
Assembly in AT-Robots (Score:2)
You know, when he reaches highschool age.
visual pinball (Score:2)
visual pinball is open source and you can also build your own pinball tables on the PC.
Micro Adventure (Score:2)
The Micro Adventure series of books was written for kids about that age. They had type-in programs for various home computers, some required that the reader correct an intentional error in the program to make it work correctly.
You can find them online for ~$1/book on Amazon and eBay, and an old 80's micro to go along with them can be had for almost nothing. (Plus it'll add some much-needed novelty to get that initial interest going.)
What do I win?
Apple Automator (Score:2)
Let's see (Score:2)
you'll need the MSP430 launch pad [ti.com], a hosepipe, some electronic water valves, some simple electronics and a swingset to make one of these waterfall swings. [youtube.com]
You could probably make one for less than $100, you would be one of the coolest aunt/uncles ever, bonus points when you get it to write his name in the air
It's probably too old, but remember Rocky's Boots? (Score:2)
http://en.wikipedia.org/wiki/Rocky%27s_Boots
I remember playing this on my CoCo2. THAT DARN ALLIGATOR ATE ME AGAIN!!!
RoboSport (Score:2)
http://en.wikipedia.org/wiki/RoboSport [wikipedia.org]
"The player creates teams of robots and maneuvers them around a board to map out one "turn" of movement. The other players and AI do the same and then all movement is played out simultaneously."
You can also set minor programming branches (if see enemy stop and fire).
Check out Scratch (Score:2)
My 9 y.o. daughter loves it. It gets through a LOT of programing basics in a fun way.
Needs a Purpose (Score:3)
I started programming at about 6 because I wanted to make games. So I came up with game ideas and then learned what I needed to in order to make them. Then I got into web programming 10 years later because I wanted to make web sites. I make a good living making other people's web-sites and still make own as well when I need something. I needed to track my time for clients and projects so I wrote my own site to do it the way I wanted to do it. I needed to track my finances so I wrote a site to do that.
What does the kid want to do that involves programming?
What problem does he want to solve?
Java is free and it's not too terribly difficult to get a simple software rendering app going that he can start rendering math functions and apply what he's learning to graphical visualizations.
C# is free as well now. Visual Studio Express is more than sufficient to do graphics programming. Even JavaScript has gotten good enough to handle software rendering using the Canvas. I used that to show students how parameters affect a function during my student teaching.
Money is not a problem. Everything is free. There are tons of resources on the internet and libraries tend to have programming books. The problem is that you're looking for a solution to a problem the kid hasn't found yet.
Incredible Machine / Lemmings / Bad Piggies (Score:2)
They are just hard enough that 5/6 year olds, with very little coaching, will be able to figure out how to play the games. Puzzles get progressively harder at each turn. Each of them add an amount of basic physics to the learning.
My 6 ye
Free software... (Score:2)
What language are you most familiar with? (Score:2)
If they have any interest in
QBasic (Score:3, Interesting)
Commodore 64 (Score:2)
Give him an old Commodore 64 plus manual. In that way he can learn programming computers on the lowest level. If you know how that works, everything else is easy.
A.I. Bugs (Score:2)
There's a 3D version, but I mean the original 2D version. Scan north south east west, fire laser, fire missle, turn, move. Basic conditionals and iteration. Variables and constants. Code executes at a constant speed per line. Program your bug to survive in an arena of other bugs. It's dead-on application, and pretty much the software side of simple robotics.
Of course, there's LOGO, which will always hold a place in my heart as a programmable etcha-sketch. But that might be growing more than old at t
Snake Wrangling (i.e., Python) (Score:2)
The Incredible Machine (Score:2)
Teach them computer networking (Score:2)
For Nintendo DS (Score:2)
Let's see, there's Bangai-O Spirits:
Bangai-O Spirits [amazon.com]
Wario Ware DIY:
Wario Ware D.I.Y. [amazon.com]
KORG DS-10 Plus:
KORG DS-10 Plus [amazon.com]
Python + games (Score:2)
A book co-written by a father-son team as the son learns Python programming developing small games
http://www.manning.com/sande/ [manning.com]
And when you're done with that, move on to slightly bigger games, still in Python
http://inventwithpython.com/ [inventwithpython.com]
If he likes math, go with math (Score:2)
Wait until your kid learns that he can make the computer do his math homework for him (by writing programs to solve the problems). Then your kid will really start programming.
Anyway, programmers are a dime a dozen. But someone who is good at mathematics is very rare. If he is already excelling in mathematics, then he has a future in any form of engineering and the real sciences.
As for your original question...you could consider getting him a TI-83 and let him go with TI-basic. Or get a programming kit f
Pencil and paper first (Score:2)
First off, pencil and paper. Teach them how to make and play wirh Turing machines and finite state automata. Enjoy the awe when you tell them about the Universal Turing Machine.
Low-level:
The HP15C User's Manual and an HP15C, or HP's 15C iApp.
High-level:
David Touretzky's Gentle Introduction [cmu.edu].
My personal favourite language of all time: Icon [arizona.edu].
S.
Cargobot (Score:2)
If your nephew has access to an iOS device, try Cargobot:
http://twolivesleft.com/CargoBot/ [twolivesleft.com]
At that age, that being said, kids usually prefer Cut the Rope:
http://www.zeptolab.com/ctr/ [zeptolab.com]
The latter isn't technically programming, but it certainly teaches them problem solving.
Robo Rally (Score:3)
A fun board game, and excellent for teaching the basic mental skills used in queuing up a list of instructions and then having them all execute in the order that you specified.
http://www.amazon.com/Wizards-of-the-Coast-217580000WOC/dp/B0009HLSP0/ref=sr_1_1?s=toys-and-games&ie=UTF8&qid=1350385716&sr=1-1&keywords=robo+rally [amazon.com]
Re: (Score:2)
I came here to suggest exactly the same game.
In addition to tracking the order of execution, the game requires you to be aware of your environment: there are board elements such as conveyor belts that always execute just after each player instruction, and failing to take them into account will make the rest of your instruction set (five instructions per turn) detrimental or even suicidal.
As far as programming goes, it's a very simplistic model. Keep in mind though that just because your nephew likes math d
Leo Brodie's Starting FORTH (Score:3)
but it allows concepts and code to be tested interactively, and as a language written in itself, lets the interested user learn
how it works, not just how to work it.
It's not exactly a resume builder, but knowledge of FORTH makes the concepts underlying other languages a lot easier to comprehend.
Re: (Score:2)
The kids is 9. Forth is maybe about 2-3 years older as a first language.
As an aside if one were going to go for a forth I'd say http://factorcode.org/ [factorcode.org] which is somewhat higher level.
Re: (Score:2)
The kid is described as "gifted" and doing math five grades above his class; I think he'd manage it just fine.
I fed a sample of Chapter 1 to an analyzer, it's written at a 6th grade level. Plus, the cartoon illustrations are better than the text.
RoboRally (Score:2)
The programs are short, but can instill some much-needed paranoia about how things can go wrong interacting with even a simple environment:).
Conway's Game of Life! (Score:3)
This is a fantastic mathematical, programming, and home creation project which you can do with your son. Its a great teaching tool, and looks awesome once your done. Take a look! The best part is that its relatively cheap as well.
http://www.ladyada.net/make/conway/ [ladyada.net]
that was my first BASIC program in 1970 (Score:2)
Logo (Score:2)
No your 9 year old nephew couldn't handle the little schemer. But 9 is a great age for Logo. Alice is also easily doable for kids that age.
SpaceChem (Score:2)
Adventure Creation Kit (Score:2)
I would strongly recommend the adventure creation kit.
http://mozomedia.com/ack/ [mozomedia.com]
Meat fun (Score:2)
do programming & algebra go hand-in-hand? (Score:2)
Usually most people can hand abstraction after a few years of arithmetic. But I've seen some people go mentally blank after leaving the concrete system of digits and never grasp algebra or programming.
Thats why I am a little skeptical about hearing of 5 or 6 year olds "programming". I dont think the
Nine? And still doesn't know programming.... (Score:2)
Re: (Score:2)
Re: (Score:3)
I started with programmg in Applesoft Basic on an Apple ][, and mostly doing stuff like drawing lines and figuring out how to make it draw a circle. (trigonometry was a lot more interesting when I found how you needed to know about sine and/or cos to do that) . If it had existed at the time, I wish I had started programming in c++ instead of having to struggle with those concepts later. Set up a basic graphic framework, give him the tools to draw dots, lines and circles and get him started in writing progra
Re: (Score:3)
Re:The Perl Obfuscation game (Score:5, Funny)
Obfuscated Perl is redundant.
Lego Mindstorm NXT (Score:3)
This question keeps poping up on slashdot every once in a while!
Get him a lego mindstorm, let him build robots that he controls from his computer code, then flash the java firmware on it uses java instead of the OEM UI interface.
Mind storm http://mindstorms.lego.com/en-us/Default.aspx [lego.com]
Java firmware http://lejos.sourceforge.net/ [sourceforge.net]
Disclaimer: don't have fun instead of him. I find I play with my kids mindstorm just as much as he does.
Re: (Score:3)
From the submission (emphasis mine)...
the Lego Mindstorm programmable robots- which would have been perfect, if only they weren't around 300 dollars...
Re: (Score:3)
Re: (Score:2)
This.
It was a very captivating experience when I was young and helped build a foundation for visualizing programs. Ii've often wondered how it could be 3D-ized, especially with the tardis-like robot interiors.