Programming for kids

I think there’s a part one to kids programming from a couple of years ago, but I cannot find it anywhere in the archives, so maybe it was a discussion in the comments section of another blog.

Computer programming is fun and extremely important.  Even as a social scientist, having a modicum of programming knowledge makes life a ton easier.  Doing statistics requires data cleaning and statistical programming knowledge.  Just knowing what is possible — being able to think in a way that allows programming to make life easier– means big efficiency improvements.  And that’s just social scientists.  Engineers and scientists often have to deal with much more complex coding structures.

Added to that, having a good background in programming also means that your code is much easier to read, understand, and to pick up later and figure out what the heck it was you were doing.  I can usually tell when someone has programming background because they do useful things like comment their code or put carriage returns between sections or indent their code properly when doing loops.  I *wish* more of the people I work with had programming backgrounds!  (She says, after spending a day putting in comments, carriage returns, and tabs so as to be able to read a program before adapting it for this year’s dataset.)

Anyhow, our first foray into programming a couple of summers ago was to try out Scratch.  Scratch was a lot of fun, but it’s more of a toy that teaches some programming structures (ex. loops) than actually teaching programming technique.  I know there’s a lot of thought that playing is the right way to go with programming, and I’m not against playing at all, but there’s a *lot* to be said for getting good technique in while you play.

So now that DC1 is 8 and has spent a couple of summers playing with Scratch, we decided to try something more systematic in.  After some amazon searching, we settled on Python For Kids: A Playful Introduction to Programming. We didn’t want to make this a chore like DC1’s homework books (which sometimes cause angst) and we didn’t want a time limit like piano practicing, so we just said ze has to do some each day, but as much or as little as ze wants.

So far it seems to be working out.  It takes the best parts of Logo (remember the turtle who made boxes?) and combines them with Python.  DC1 is pretty excited about it, and occasionally asks DH for help.  If you don’t have a professional programmer in your house, the same publisher also makes a Python book for parents, Teach Your Kids to Code.

Do you use programming or programming techniques for your work or hobbies?  Any suggestions for introducing people to coding?

25 Responses to “Programming for kids”

  1. Engineer Cents (@engineercents) Says:

    Kodu game lab on the Xbox also does the “kids can program games!” thing, though I don’t know how similar it might be to Scratch.

    Is there a particular style of thinking / what are you’re hoping to have them learn? I’ve found logic puzzles to be a more useful introduction (for myself) to different logical concepts (deductive, constructive, inductive, etctive reasoning). That way the foundations of logic are there once you get to the point of application (i.e. coding).

    For adults at least, I always link people to Coursera courses if they’re interested in programming. Their library of CS courses is GREAT and the lectures (though not the assignments) are pretty much identical to what you’d receive at the course’s home institution.

    • nicoleandmaggie Says:

      Right now I care a bit about grammar and formatting, not just concepts. Proof-based geometry is also a great way to introduce the logical concepts necessary to more complex programming.

      • Engineer Cents (@engineercents) Says:

        Hm, grammar and formatting is tough because all the “fun stuff” is more freeform (i.e. can lead to very bad programming technique) while stuff for good coding practice isn’t really geared toward kids.

        Maybe have them do the Python Challenge: http://www.pythonchallenge.com/
        Gamification = motivation. Then buy them a Python O’Reilly book and point them to Code Academy and Coursera for primers on the language so they can, you know, actually solve the puzzles. At 8, some of the puzzles might go over their head, but as long as they have an adult to consult, it might be a good starting point/teaching tool.

        That’ll teach them the language basics. And then once they get a little bit older, point them to some open source projects in things they might be interested in (e.g. open source games) and thus gain exposure to good programming technique. Should do it was soon as they start launching into big non-one-off projects though so they don’t develop bad habits.

      • nicoleandmaggie Says:

        The python for kids book we link to seems to be pretty good. We’ll look into these after ze is done with it, thanks!

    • Leah Says:

      I love logic puzzles! I use them in teaching science (say, if we have a weird gap day before vacation) because it helps students learn to reason through multiple choice questions. Reasoning is a great soft skill.

      If you’re also looking for something more basic (maybe for DC2), there’s a game called Robot Turtles that uses programming terms for kids to move through the game board. I bought it for my husband, but we haven’t had a chance to play yet. Planning to use it when our little one gets older (she just turned 1).

  2. kt Says:

    This may be too advanced for an 8-year-old, but I loved it: https://www.coursera.org/course/interactivepython2 . It’s Interactive Programming in Python (on Coursera) and it has you program video games like Asteroids. It was fun when I took it :) I think it would be great for a high school kid who’d had some exposure to geometry or trig — perfect to solidify knowledge of that math, as well as do some programming!

    Looks like they split it into 2 parts, and I’m not sure why. Now two 4-week segments instead of one 8-week class?

  3. Susan Says:

    Love this. Can’t wait til my kiddos get to this age. I remember your earlier post too. Filing this away…

    I am definitely a dabbler (modify code & write simple programs for data processing) rather than a Programmer. I did have one class in c++ in college but it’s probably my crap code that you are cleaning up!

  4. Leah Says:

    I used Logo in school. Also, my 5th grade teacher was a former programmer, and he taught us BASIC. I did my math homework in BASIC regularly, but I can’t for the life of me remember what I actually did.

    I used to know how to code, but that’s a skill that slips if you don’t use it. I really, really wish I had kept it up and taken some computer science in college. I used a lot of MatLab in grad school (coding life cycle matrices, mostly) for computational ecology, and my coding always sucked. I got a lot of help from friends.

    I’d love to see a “coding for adults” post. Or do you think these programs for kids would also be fine for adults?

    • nicoleandmaggie Says:

      I’m sure the programs for kids would be fine for adults. It sounds like people have found coursera helpful too. I do have a post that I keep meaning to write about my goals for improving my Stata programming this summer. I’ve really gotten into Workflow.

  5. monsterzero Says:

    I read a post somewhere (Coding Horror?) from someone who teaches coding. They did a study and found that the single biggest predictor of success in their class was a single question on assigning values to variables. It went something like this:
    let x=1;
    let y=2;
    let y=x;
    let x=y;
    What are the values of x and of y?
    Apparently this was a giant stumbling block for a large proportion of students, even after taking a whole semester of programming.

  6. fizzchick Says:

    If you want to explicitly focus on the thinking, might I suggest reading Lauren Ipsum? It’s a fun story but also a nice intro to a lot of programming and logical concepts. I think it would work nicely as a “read one chapter aloud and discuss” kind of book.

  7. sciliz Says:

    This post reminds me how much I miss that turtle.

  8. SP Says:

    I do almost no coding these days, but have in the past. I agree it is important for the things you mention: knowing what is possible and how it works. I also think that it can be really fun – the neat thing about coding vs msot types of engineers is that you can make a program that “works” with basically no resources except time. (it might not scale or whatever, but it can be really fun.)

    Unfortunately, no suggestions from me.

  9. jlp Says:

    I just had a conversation about this last week – how to help kids make the leap from Scratch/Lightbot/Cargobot to actual coding. So I’m excited to check out Python for Kids!

  10. Calee Says:

    My 8 year old is doing the Kahn academy Java videos. She loved hopscotch on the iPad as an intro to programming but wanted to do more this summer.

  11. Rosa Says:

    This is the progression we have gone through too (though I say we, it’s the programmer in the house who made all these decisions) – Scratch to Python, with a sideline of whatever the LEGO robot team uses (it’s visual chunks you click and drag).

    Does your kid do Minecraft? All the kids we know do, but so far they’re pretty happy to find and copy codeblocks other people have made, not make their own, mostly.

  12. MutantSupermodel Says:

    Your post reminded me of the Jewelbots Kickstart that’s out right now: https://www.kickstarter.com/projects/1345510482/jewelbots-friendship-bracelets-that-teach-girls-to

    We have Robot Turtles. My kids outgrew it pretty quickly. It’s definitely great for preschoolers and/or kids with parents (or older siblings) who love to spend hours making silly noises.

    This is something that I really want to get on but I have such a hard time actually executing. It’s so impressive to me you have your kid doing so much cool stuff! I can barely manage with getting them to school and karate!


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: