6 ms·
My 7-Year Old Daughter’s First Programming Experience
- dgabriel 13y agoThis has been a super fun thing in our house: http://scratch.mit.edu/ http://scratch.mit.edu/ It's also something a 7 year old can use on his or her own to learn concepts and make fun stuff.
- idancali 13y agoWow that's great. Thanks for the tip. I'm going to check it out.
- couchand 13y agoThere's also Blockly [0], which you can use to build similar software. [0]: https://code.google.com/p/blockly/ https://code.google.com/p/blockly/
- idancali 13y agoawesome thanks for the tip, I'm gonna check it out
- rst 13y agoFor Android devices, there's also MIT App Inventor, which is a very scratch-like environment for writing mobile apps, available here: http://appinventor.mit.edu http://appinventor.mit.edu In addition to basic I/O and animations, it's able to deal with a lot of the device capabilities, including SMS, GPS, dealing with the camera, and so forth. Unfortunately, I don't know of any similar environment for programming iThings --- Apple fairly famously rejected a Scratch port from the app store in 2010: http://wiki.scratch.mit.edu/wiki/Scratch_Viewer http://wiki.scratch.mit.edu/wiki/Scratch_Viewer although a "Scratch player" for Android is in alpha, and apparently, people are also working on pure HTML versions.
- dmoo 13y agoThere is an app called Hopscotch for the iPad which is of similar structure to scratch. I can't recommend scratch highly enough, the kids at my local coderdojo really do some great stuff with it.
- pbhjpbhj 13y agohttp://learn.code.org http://learn.code.org uses the same [Blockly?] interface, just tried the first few stages with my 4 year old this last week. Only problem was his general literacy; but he sat on my lap and did the thinking for the problems and I read out the text. Have used Scratch (and light-bot and various turtles) before too with an older child. learn.code.org has quite a few interesting facets, including using Angry Birds and Plants vs. Zombies artwork; they also integrate light-bot as one of the avenues for learning.
- femto 13y agoI'll second this. Install Scratch, then stand back and let the child lead.
- nkuttler 13y agoI think it's great that the author found something that worked for him and his daughter, but this particular example seens a little complex. The first code I ever wrote was something like 10 PRINT "HELLO" 20 GOTO 10 That's 3 or 4 steps. No IDE, no GUI, no variables. A program I could re-create completely on my own the next day.
- idancali 13y agoHey I hear you. When I started coding I was 9 and I did something like that in BASIC. It was awesome. I was actually considering what to start out with and I just went for iOS off the bat to see what happens. I also think kids these days pick up stuff way faster than 20-30 years ago. It's insane how fast they pick up things like touch interfaces, smartphones, tablets, etc for example.
- foobarian 13y agoSame here. I have a one year old now, and was just thinking how sad it is that there isn't an equivalent of a C-64 any more. Turn it on, bam, a BASIC REPL in less than a second. Give the kid the language manual (all of 10-20 pages) and off they go. Today, there is all this cruft they have to be shown (Cmd-R, XCode, etc.). If they screw up they can't just reboot. There are benefits of course. Knocking out the power cord doesn't destroy the work in progress. There are non-volatile media. Screens have colors :-)
- spacecowboy 13y agoI like the focus on variables and values - very cool! congrats!
- idancali 13y agothanks dude, I do believe that's the first fundamental concept that makes most sense in a 101 course/lesson. If you get that, you can move on, if you don't, then you have no ground to stand on
- xendo 13y agoI don't have kids, but even if I had this entry would still be totally worthless for me. It's touching and nice, but can anyone learn anything from it? I don't really think that there are any useful tips on teaching 7 year old anything, I would even say that it's quite opposite, how could anyone post code like this in such context: @property (nonatomic) IBOutlet UILabel* label; ?
- idancali 13y agoI hear you, but if you check the timeline of the lesson, I didn't teach her every step of the code, that would be too much info off the bat. I wrote a bit of boilerplate code and her lesson - as I mentioned in the post - was just those 3 lines where we talked about variables mostly.
- xendo 13y agoHave you considered that XCode and Objective C may not be the right tools for the job?
- wlievens 13y agoSomething like Scheme would be appropriate.
- pubby 13y agoScheme with graphics (i.e. a LOGO module) sounds very good. Kids are much more impressed by getting pictures to appear than seeing a number output.
- idancali 13y agoon second thought I think you're right. I think it wasn't so much about the tools as much as it was about the concepts behind what coding is, what a variable is etc.
- ktzar 13y agoI agree, kids are pretty good at isolating something they understand from the rest and just stay focus at what makes sense. If there's a piece of code that makes sense and they wrapped their heads around it doesn't matter if the rest is gibberish.
- failrate 13y agoHow young can a child learn to program? While I'm not ready to indoctrinate my four-year-old into the monkhood of true geekery while he's getting in his prime running around time, I was curious to see how logically he could think. My layman's knowledge was that children began properly interpreting and creating rules around the age of six, while four was still wild imagination territory. For my experiment, I created an extremely minimal programming game, like a very stripped-down version of RoboRally: https://dl.dropboxusercontent.com/u/5458223/robot_factory.jpg https://dl.dropboxusercontent.com/u/5458223/robot_factory.jp... The image depicted is doctored. We had already completed four playthroughs the night before with a similar setup, however. He was able to figure out how to program the robot to collect all of its pieces (three Duplo blocks comprised the robot; successful completion of the robot wins the game). I demonstrated the rules once, and then let him try to play by himself with minimal guidance. One interesting strategy he discovered was placing the "instructions" (the cards with arrows) on the game board in order to create a path. https://dl.dropboxusercontent.com/u/5458223/robot_factory_redux.jpg https://dl.dropboxusercontent.com/u/5458223/robot_factory_re... A few weeks later, we played it again, and I taught him how to make new "instruction cards". We're not yet at the place where we've done anything with variables and abstraction. Apparently he liked the game well enough, because he independently recreated it at school:
- idancali 13y agothat's great man! I'll try that with my 3 and 5-year old boys to see if they pick it up. I was thinking about the whole "how young can a child learn to code" thing too and I think it's obviously a matter of the environment they're used to. If they create a lot, arts/etc, play with Legos for example at a young age, that sort of stuff, they might be inclined to pick up more abstract things at a younger age. My daughter likes doing a lot of math stuff for fun and she has a tendency towards numbers and abstract thinking so she picked it up naturally. We'll see how the boys do in a couple of years :)
- scoofy 13y agoA child using language functionally to get what he or she wants is essentially a form of programming. Example: 1. result = ask_parent_or_candy(mom, nicely) 2. if result != candy: 3. ask_parent_for_candy(dad, nicely) I studied analytic and philosophy of language, and i feel that many people in CS don't see the forest through the trees when it comes to programming as such. While some code (e.g. C) handles much more technical aspects of what is actually happening, scripting languages are much better suited to the human mind, and i think creating a natural language language (<-- that seems a bit redundant) is an achievable goal. If i had a child, i would start her out on python, because python is essentially in english, and english is the only code i'd prefer to write, given the choice if there were a formalized english scripting language. Even in python there is a bit of jargon that i think is an unfortunate holdover. Int vs float may be necessary, but "string" is a poor term for what is essentially text. I'm not saying we should change anything, because coding is becoming more like natural language organically, but again, if i were to teach my child coding (and i don't want to step on any cuteness of this story), i think a child would understand python better than anything with brackets and semicolons. Full disclosure: i genuinely like python better than most languages.
- evolve2k 13y agoI wrote a post some time back on teaching my kids to code, thought I'd include it here in case anyone found it useful. http://richiekhoo.com/post/18723300657/coding-with-kids http://richiekhoo.com/post/18723300657/coding-with-kids
- jonalmeida 13y agoThis is brilliant and amazing to read. What comes to mind is, we need a list of analogies in the most simplest form so that we can explain fundamentals like variables to kids. Hell, anyone who doesn't know how to code really! 75. HN reads and smiles
- idancali 13y agoI think you nailed it my friend. That's exactly what was going through my mind as I saw myself trying to teach her what a variable is. My boys were playing with Legos and I was drinking coffee so I'm like alright, let's try that. We went through other analogies that I didn't blog about but one of them was how the whole IDE window (XCode) is like a table that you draw on and how a program is like a drawing you make in art class. So the purpose of coding is to use an IDE to create programs just like in art class you draw on a table and create art work. Also, just like you need pencils, colors, etc, in coding you need variables, methods, etc. Kids get stuff like this really fast.
- jonalmeida 13y agoI'd be interested to see some more examples you come up with if you continue to teach your kids. I'm re-learning basic trig right now for drawing OpenGL stuff, and I was trying to think what I could have told younger-me on why I should be paying attention in high school for this topic. When I was in high school, it would have made me more attentive if people said, "Hey, this stuff that finds circle arcs and radius, you can use this in real life if you decide to get into gaming, graphics, .. (and other cool topics that would excite me)."
- idancali 13y agoYeah it'd be interesting for me too to explore this further. Stay in touch via my twitter @idancali and I'll post stuff as soon as I get a chance. Until then, check out this post I wrote recently: http://dancali.io/blog/you-too-can-become-a-computer-programmer-heres-your-first-and-most-important-lesson-in-computer-programming http://dancali.io/blog/you-too-can-become-a-computer-program... It's about how I decided to pursue coding as a career when I was in high-school. I think the main thing is to tell younger kids that coding is an art just like drawing and that there is no right or wrong way of doing stuff. They should not be afraid to break things and experiment and they should absolutely have fun building things, seeing things come to life. That's what got me into coding in the first place and I think that's what makes a world of difference. The rest, the variables and things like that are secondary.
- linuxhansl 13y agoEvery now and then I do "math" with my son (5 years now). I just use a terminal and "bc". He loves to type in numbers and + or * and see the result. And for + we "guess" ahead of time what the result will be. What amazed me early on: bc has variables. I explained it to him and somehow he immediately got it. You say A is 5 and B is 1 then A + B is 6. His attention span is usually around 5 minutes, but each time it's fun.
- idancali 13y agoGood stuff and congrats. I'm always amazed to see young kids get into coding and math. I think that's awesome. I was so pleasantly surprised when she got the whole variables thing. I think drawing analogies to real life stuff is a sure way to get kids engaged, especially if the props you use are toys. About the attention span - yeah I noticed my 5 (almost) year old wanted to try when he saw his sister having fun, but then he got bored after a couple of minutes.
- FD3SA 13y agoThat's one of doing it...the other would be something like this [1]. Not ashamed to say I had to beat the whole thing the first time I saw it because it was so brilliant. And I normally hate pointless puzzle games. http://light-bot.com/ http://light-bot.com/
- idancali 13y agothat's look really really interesting! I was actually thinking of looking into tablet apps that teach kids stuff like that in a fun way. Thanks for the link, I'll check it out
- bsilvereagle 13y agoMore apps should have a video showing you the gist of what's going on like they do.
- sideproject 13y agoThat was totally awesome + cute. I have 5-month old girl and can't wait to teach her to program! :)
- idancali 13y agoAwesome, let me know how that works out :)
- wallflower 13y agoCheck out Hopscotch: https://itunes.apple.com/us/app/hopscotch-coding-for-kids/id617098629?mt=8 https://itunes.apple.com/us/app/hopscotch-coding-for-kids/id...
- brc 13y agoThe author correctly says 'pieces of lego' into the cup - but previously says 'playing with their legos'. I'm sure they wouldn't say 'the children were looking at the sheeps', and then later on say 'the children counted the sheep'. For whatever reason, this irks me when reading as a grammar error. It's like a klaxxon sounding in the middle of the sentence.
- idancali 13y agoI know what you're saying, and the funny thing is that when I wrote that, I actually paused and thought about the proper way of referring to LEGO. So if you google "playing with legos" there's a ton of articles that use that expression, such as this one on HuffPost for example: http://www.huffingtonpost.com/2014/01/28/google-legos_n_4681201.html http://www.huffingtonpost.com/2014/01/28/google-legos_n_4681... So kids 'playing with their legos' is valid given the fact that LEGO has become a household name and LEGO can refer to the brand, the game itself, while Legos, or legos can refer to the LEGO blocks themselves. It's sort of like using Google as a verb (http://en.wikipedia.org/wiki/Google_(verb) http://en.wikipedia.org/wiki/Google_(verb)) Thanks for reading btw PS. English is my third language so a grammatical error here and there wouldn't be that bad anyways :)
- brc 13y ago'Legos' is a very North American term so you may have just picked up an (incorrect) slang. This was an interesting discussion if you're genuinely interested: http://english.stackexchange.com/questions/10839/legos-not-lego http://english.stackexchange.com/questions/10839/legos-not-l... Most North Americans will have been brought up with the incorrect usage, and will defend it strenuously, but they are wrong. The correct plural is Lego, or, if you want to get specific (as you did in the article), lego pieces or lego bricks. The company spent many years trying to teach correct usage but gave up in the end. But correct is still correct, and if english isn't your first language, there is still time! Even in the verb usage 'kids playing with their lego' - you don't pluralize the term.
- fit2rule 13y agoMy 6 year old and I often boot up the old 8-bit machine that I have reserved in a corner of my lab just for this purpose. I have to say - there is no better way to teach a 6-year old to code than to fire up a BASIC-running 8-bit machine from the 80's and let 'em at it. Something so satisfying about hearing him read out his code .. "10 ... do this .. 20 .. do that .." ;)