Only when I encountered C, a "real language used by adults!" did I really get interested...
Still, I think starting kids with C is a bit much. What's wrong with Python?
I don't like the author approach for teaching programming, I think kids in general need more abstractions instead of entering into CSS, Javascript, etc. I found in Alice 3D a better approach.
The way it dealt with recursion, the way you can define new commands using old commands and chain them together, all these things made Logo fascinating. I remember writing a pretty good Eliza program in Logo. Don't think it's just about the turtle
However:
>Unsurprisingly, I've found that gamification works.
I suppose it does for plenty of people, but personally I'm not a fan. Saying "don't patronize" and then adding badges, points, and the like as enticements triggers some non-trivial amount of cognitive dissonance in me. Then again, I'm an adult, maybe it provides a structure children need and I've long since lost touch with that.
But a deeper problem with it is that to gamify something you have to measure it exactly, you get more of what you measure, and it's all too easy to measure the wrong things (or even to measure the right ones but still have undesirable untintended consequences).
It strikes too much of teaching to the test, which isn't the best way of cultivating creativity and innovation in students. Students will optimize for that gamification system, instead of optimizing for depth of understanding and creativity and, perhaps, self-efficacy in real world unstructured situations.
Which also begs the question, when teaching young kids, should we be focusing on drilling them in a body of knowledge, or first developing a hacker mentality - curiosity, resourcefulness, and determination to figure this thing out and make it do what you want?
In that light, I find the recent Wired article on the "radical new teaching method" [3] of just giving kids computers and seeing what they do with it much more interesting.
It's well documented that children pick up foreign languages much quicker than adults by mere exposure, might it be the same for computer languages?
How about try giving the class a bunch of Chromebooks w/ a terminal app and SSH, and their own AWS t1.micro, and see if they can figure out how to set up a website, using whatever means they're able to (even Amazon's excellent documentation).
Get a static site up, then build on it from there - HMTL -> CSS -> JS -> backend whatever.
Web development is not exactly hardcore programming, but few things are as exciting and captivating as seeing your own website on the Internet for the first time, and the combination of that plus the relative ease of figuring it out would be perfect for 9-13yr olds, I think.
[1]: http://www.trollope.org/scheme.html
...
When you don't formalize the challenges, the kids just kind of meander, don't get much accomplished and things start to devolve into chaos. I know there's been a bunch in the press lately about how if you just poke a hole in a wall and stick a computer in it the kids will teach themselves differential equations or something and then of course teach it to a bunch of the other kids (believe me, I'd love it if it were that easy), but that's not been our experience at all. Not remotely. We've tried that a number of times in a number of different ways (because you know - it's easy) and when you're feeling burned out from work or didn't have time to write up a bunch of challenges, it's something you can rationalize trying, but we've NEVER seen that work. Occasionally, one of the kids will look something up on the web or figure something out on their own and tell the other kids about it, but that rarely gets them very far.
...
Just to add to this a bit in the form of a slightly different technology. I bought a few Mindstorm kits last year for the class, wrote up a bunch of easy to read documentation and examples and basically told them to go at it, but even with that and the occasional soft intervention, not a whole lot happened in terms of learning. And we tried this a number of times throughout the year. Sure, they learned a few basic concepts, but the efficiency was extremely low, and nothing much was learned that was transferable. This is also pretty much the same story I heard from every well-meaning, thoughtful and supportive parent who bought their "gifted" kid a Mindstorm kit. They basically played with it a few times, mostly with the legos and then gave up and left it in the corner.
...
In regards to the concern about teaching to the test, I make up new challenges every week based on how the kids are progressing, what they're struggling with, what they're excited about, what the next logical learning step might be, etc., so it's not like there's something static that they can optimize against or cynically "game" without actually learning how to code.
Also, while we're very focused on whether they're having fun, exploring and being creative, at this stage the primary goal is to give them enough fundamental skills to be able to do ANYTHING interesting. I mean it takes a lot of work to get them even to that point, and we're not there yet. And the thing is that we're competing against very attractive distractions like Mindcraft and YouTube, as well as all the homework they have to do and the other activities they're involved in, so it's not like being relentless task masters would even fly with them. They'd simply quit.
To sum it up, what we're attempting to do is extremely hard. We're not idiots. And we're really trying. I've probably read just about every related article that's popped up on HN over the past two years, plus 100 others on learning theory and creativity, but a lot of these articles are just people spouting off who've never really tried it in the real world for any length of time or with kids this young, and I can tell you that a lot of it just doesn't work, or not to the degree that you may have been lead to believe. Look, I can't speak for what works for a every group of kids in every context, but what we're doing seems to be working, the kids are having a blast, and if we keep up this pace I think the kids might actually be able to do some real stuff within the next few months, which, in my opinion, would really be something.
Out of curiosity, in your research, did you ever come across any material on how to teach symbolic logic (be it math, CS, music, or linguistics) specifically to children not naturally talented in it? This is a problem I've become interested in recently, but haven't dug into the research yet.
As an example, my daughter Izzy, who's 7 and in second grade, is really struggling with her math and it's pretty frustrating frankly. But my wife has been trying lots of stuff with her like watching Khan Academy videos, doing practice problems on www.ixl.com, working through Singapore and JUMP math workbooks, working with physical objects as examples - counting change, poker chips, or whatever.
The bottom line is that every kid is a little different and what works for some may not work for others, unfortunately. ;)
Edit: In regards to how to teach symbolic logic to children who may not be naturally talented, you might want to check out JUMP Math: http://jumpmath.org. They seem to be doing some innovative things. Here's an interview with the founder: http://www.youtube.com/watch?v=g3YWnbxOxMQ.
Embarrassingly: how do you create a color changing circle on the screen? A div with border radius?
Anyway, big fan of your podcast also.
It's so hard to make broad generalizations about how to teach kids to code because it really depends on so many different factors (age, interest, ability, etc), but after a lot of trial and error I do think we're zeroing in on a workable set of strategies for our little group.
(I was in the middle of writing a much longer response, but I decided to save it for the show this weekend because among other things I need to try to get some work done. ;))
You mean the photo? It's an img with a border radius and a shadow.
I remember thinking this while watching a TED talk by a guy who created one of the programming-for-kids websites. Like, cute game and all... and I suppose it ingrains concepts like variables and "for" loops and whatnot, but how intimidated will these kids be when they see real code files in an IDE? That's the real barrier to learning to code, I think-- especially for little girls.
Weren't most of us old school nerds programming with 'real tools' when we were 9-13, after all?
Of course, the 'real tools' were a lot simpler then. But the motivation of actually building something real should not be underestimated.
10 PRINT 'I AM AWESOME '
20 GOTO 10
What's the current equivalent to that?As the father of an 8 year old, I'd love to know how you got the kids to the point where "Create a web page called big-green-circle.html" and "Hint: use the events onmousedown and onmouseup" made any sense to them.
(alternatively, just put your curriculum in an ebook - I'm sold already)
Building static sites, I completely endorse.
I don't understand why they should use a VPS to do it.
The problem with most devs trying to teach kids is they don't know how to make it approachable, and to have draw. "I can make the robot dance" is both. "I can make a web page pretty" doesn't appeal to every kid, and the amount you have to do to see something do something is a lot.
I wish the programming community in general was more friendly to newcomers. I see people tell others that only CS people should be doing this don't even try a lot.