I introduced both of my children to arduino at age 7. My son took to it instantly and in weeks was producing things that surprised me. My daughter could not have been less interested; struggled through to few things I showed her forgot it as soon as the lesson was over.<p>This is how it stayed until the day some random project of my son's involved placing a servo inside a small stuffed toy. The moment my daughter saw the little toy turn and "look" at her, there was nothing in the world that could stop her from trying to learn how to do this herself.<p>You can't teach your child to code, only present it in a way that will interest them. If you succeed you will not be able to stop them. No one else will be able to either.<p><i>“I think the big mistake in schools is trying to teach children anything, and by using fear as the basic motivation. Fear of getting failing grades, fear of not staying with your class, etc. Interest can produce learning on a scale compared to fear as a nuclear explosion to a firecracker.”</i>
― Stanley Kubrick
The key is a "hook," a goal, a source motivation. Seeing how a particular technology enables new capabilities and applications is a powerful encouragement to learning it, even for professional adult hackers.<p>"Make your own computer games" is a hook with many kids (not all). I suggest writing your own implementation of a few very simple games (Hangman, Yahtzee, Boggle, ...) as "lesson prep," this way you're familiar with the strategy and can identify stumbling blocks, needed libraries, etc. I suggest sticking with print / terminal at first (GUI / web stuff introduces a lot of baggage since the model is more complicated).<p>Then sit next to your daughter and tell her what to type. Of course you should explain what your code does as you go along, and you should ideally do this without looking at your earlier implementation. This helps emphasize the thought process -- you're not just copying magic words from somewhere else, you're using your mind to figure out the right magic words for what you want to do. You should also use an iterative development method -- frequently run it and see the product slowly taking shape.<p>The initial lessons are more about driving home the fact "You can type in these magic words and make the computer do anything you want" than about the precise details of what the magic words for your particular programming language are, or what they represent. Once the kids realize what sorts of things magic words can do, they are then motivated to learn the particular details. This makes it way easier to teach them, and also encourages them to seek resources on your own.<p>Source: This was how my dad introduced me to programming at age 5-6. It worked :)<p>Also, buy the book at <a href="http://www.laurenipsum.org/" rel="nofollow">http://www.laurenipsum.org/</a> -- it makes a great bedtime story. Hackers of any age will really enjoy it.
Demonstrate instant reward. If you want a child to be interested in anything, they have to see the reward in it, but it must revolve around something they consider fun. A child's curiosity is based around this one question: "What can I get out of this?"<p>Many people who started programming young didn't program for the sake of programming or for the aspiration to be a great computer scientist when they grow up. Instead, they programmed for a goal they considered fun. Programming was only an enabler. So, how can programming enable more fun in your child's life?
Take a look at MIT Scratch:<p><a href="http://scratch.mit.edu/" rel="nofollow">http://scratch.mit.edu/</a><p>My 7-year old son loves it.
It might be fun to look at LOGO (maybe UCBLogo[1], free books included) for a first programming language. This has a first-person (turtle) view on a GUI that you move around to make shapes and do math/physics. The idea is that when programming it will be easier for the programmer to associate themselves with the turtle and interaction/exploration in the language will be natural.<p>The Logo way is pretty different from conventional programming models because it was tailored to be more intuitive than conventional languages like C, JavaScript, or VB. It still offers access to complex, higher order programming concepts like algorithms, AI, automata, etc. Harold Abelson from MIT (SICP) wrote a cool book that covers math/physics in Logo, too.[2]<p>The creator of the language has an awesome book[3] on how computers can enhance pedagogy and someone wrote a cool blog post on programming for children that mentioned it too[4].<p>[1] <a href="http://www.cs.berkeley.edu/~bh/logo.html" rel="nofollow">http://www.cs.berkeley.edu/~bh/logo.html</a><p>[2] <a href="http://www.amazon.com/Turtle-Geometry-Mathematics-Artificial-Intelligence/dp/0262510375/" rel="nofollow">http://www.amazon.com/Turtle-Geometry-Mathematics-Artificial...</a><p>[3] <a href="http://www.amazon.com/Mindstorms-Children-Computers-Powerful-Ideas/dp/0465046746" rel="nofollow">http://www.amazon.com/Mindstorms-Children-Computers-Powerful...</a><p>[4] <a href="http://worrydream.com/LearnableProgramming/" rel="nofollow">http://worrydream.com/LearnableProgramming/</a>
Cool thread, I just started a thread about teaching my own daughter how to code a few hours ago :) First off, congrats on the intention. I believe code literacy is going to be a key educational principle in the 21st century so good for you on taking a step towards that so early.<p>For me teaching my kids (I've got 3) is not so much about getting their brains stuffed with algorithms and technical stuff, but it's more about giving them access to a world where they can create art. I personally believe coding is more like painting than it is building a bridge. It's a creative process , where things like inspiration make a world of difference.<p>So the first thing I'd recommend is getting your daughter used to creative activities like drawing, Legos, building stuff, number games, word games, stuff like that. See how she likes it. Then try more advanced things. I started teaching my daughter math early on, since she was about two. We started with counting, then moved up to counting by 2s then backwards, just to see how her mind worked and how she would respond to creative problem solving.<p>It turned out she loved it and to this day she loves solving problems like those games where you have to almost identical pictures and you have to spot the differences, etc. She also likes playing match-3 type games on the iPhone and playing word games.<p>So get her started with that. If she sees math as fun, I think that's the first and probably the biggest win.
If I can sneak a shameless plug in here, I'm the developer behind Kodable - <a href="http://www.kodable.com" rel="nofollow">http://www.kodable.com</a> - an iPad app that introduces kids to programming before they can read.<p>I know the article said you'd like to keep Devina away from screens for awhile, but we've had kids as young as 18 months using it to learn all about functions, loops, and debugging. Even if she's too young for Kodable, or you'd like to go a different route, we've talked to tons of parents teaching young kids programming and I've learned a lot about the process. I'd love to help any way I can. You (or anyone else interested) can send me an email at jon-at-kodable dot com.
I pity the poor little kid. At this stage in life, people (none other than her parents) are already concerned how she is going to contribute to the world. Let her live for a while. Let her explore, find a path that's interesting to her.<p>I know programming is the future, its the basic skill that will be necessary for all professionals. But let her learn to walk, see, smell, touch, taste the world around her. Sheesh.
I wrote my first HTML when I was 7, it was some now-deprecated html like <body bgcolor="#CCCCFF"> and <font color="blue"></font>. I think I was around 9 or 10 when I learned some JavaScript. Back then I used w3schools because I didn't know any better.<p>I would recommend to show her what code can do, give her some resources, and allow her to explore and experiment.
Once they get a little older, maybe try alice [0] [1]<p>0. <a href="http://www.alice.org/index.php?page=what_is_alice/what_is_alice" rel="nofollow">http://www.alice.org/index.php?page=what_is_alice/what_is_al...</a><p>1. <a href="https://www.facebook.com/AliceProgramming" rel="nofollow">https://www.facebook.com/AliceProgramming</a>
Scratch (<a href="http://scratch.mit.edu" rel="nofollow">http://scratch.mit.edu</a>) from MIT is the best tool I've found so far.<p>The focus is on creating scenes and stories, which I've found has really resonated with my kids.
Here's a good Board game that has the concept of instructions and executing them: <a href="http://boardgamegeek.com/boardgame/18/roborally" rel="nofollow">http://boardgamegeek.com/boardgame/18/roborally</a>
I am surprised no one has mentioned <a href="http://www.codecombat.com/" rel="nofollow">http://www.codecombat.com/</a> yet. Or is that too complicated for kids? (i only did the tutorial. it seemed easy and fun)