Hacker News new | past | comments | ask | show | jobs | submit login
My New Strategy for Teaching Kids How to Code (plus.google.com)
99 points by jayro on Oct 23, 2013 | hide | past | favorite | 28 comments



The "Don't Patronize!" lesson is new and interesting to me. Come to think of it, I remember being first introduced to programming with Logo and its "drawing turtle" back in elementary school. While fun, it didn't spur much exploring for me then because I didn't see its possibilities out of that sandbox.

Only when I encountered C, a "real language used by adults!" did I really get interested...


Logo is misused. It was never intended to be a tool to teach programming. It was designed as a tool that made the conceptions of Euclidean geometry available to direct experience and interaction -- and I think it succeeded passably well. For instance, if I were asked to calculate the internal angle of a heptagon, the first thing I'd do is reach for my mental turtle.

Still, I think starting kids with C is a bit much. What's wrong with Python?


I started with TI Logo when I was 8 and it was fascinating because you had sprites and you could make animations with speed, directions, etc.

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.


I learned Logo on the Spectrum and was entirely captivated. It had most of the elements of a full LISP package in there, the turtle graphics were one element.

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


Seconded. Logo bored me fast, maybe in part because I'd already experienced BASIC on our family Apple IIgs. When I was introduced to Pascal in high school, I really got stoked. It's funny how vividly I remember the teacher and everyone in class being totally aware that the week we spent on understanding pointers was going to be painful :)


Based on limited experience with younger kids and http://scratch.mit.edu/ the "cuties" (i.e. cat image etc.) are a distraction. I have a hunch the real browser apps idea is not as crazy as it sounds for kids who can type.


I haven't read the article yet as Google+ is blocked at work. I'm coaching young kids for First Lego League tournaments this year and witnessed that the Legos Mindstorm robot platform (http://www.lego.com/en-us/mindstorms) makes the kids really excited about programming. Here, one is introduced to programming through very easy graphical environment and can progress to high level language based programming in C, Java etc over time.


i'm pretty sure this will work.

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.


I'm not a proper programmer but I started on the BBC micro's BASIC with:

    10 PRINT 'I AM AWESOME '
    20 GOTO 10
What's the current equivalent to that?


Jason, this is amazing stuff.

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)


I learned basic first, then c++, THEN the web started and seeing how a little markup and some javascript or vbscript (yes, that was in ie back then) could make an interactive experience, my interest in programming and creating things exploded. I vividly recall the first time I made a static site, the first time I ranked in altavista for a term, or other things that people could related to. It connected a freakish hobby (telling a computer what to do) with the real world that other people could consume and relate to.

Building static sites, I completely endorse.

I don't understand why they should use a VPS to do it.


100% agree with #1! I would have written the heading as something like "Be relevant," though-- a little more focused on what you were saying about using real tools.

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.


My 10 year old daughter, who expressed an in interest in coding is currently churning her way through Codacademy and really enjoying it. As I am.


Awesome!


I taught Kindergartners to code using "Project Europa" it was truly Object oriented, didn't require them to learn syntax, and they loved making Robots do things. TC Lego Logo is a good choice as well.

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.


Jason, if you're reading this: bravo. Finally finally finally an article about teaching by someone that is actually doing it and seeing it through. Your words ring true because you have such extensive first hand knowledge. I used to teach, and the amount of general misconception about the craft is very frustrating.

Embarrassingly: how do you create a color changing circle on the screen? A div with border radius?

Anyway, big fan of your podcast also.


Wow, thanks for that!

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. ;))


Not the author, obviously...

You mean the photo? It's an img with a border radius and a shadow.


No, I was referring to one of the challenges he presents to his students. There's a link in the post.


I like these types of things and for someone who picked up an interest in coding while in college. I wish I had resources like this when I was a kid.

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.


I started teaching kids Ruby on Rails with Nitrous IO virtual web environment and it's pretty good. https://www.nitrous.io/join/ByKc2ypawx0


Maybe you could check out teen2geek.com when its released? It's mainly for students like yours, so that could be helpful to them.


This deserves a mention of the "Scheme Story" [1] linked in PG's essay "Beating the Averages" [2]. Conceptually similar to "don't patronize".

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

[2]: http://paulgraham.com/avg.html

[3]: http://news.ycombinator.com/item?id=6553155


I think web development is the best way for beginners to get into development and programming, because it is simply much easier to get a functional, visual product up and running for you to see without too much algorithmic thinking, thus creating interest in the subject leading to the student working on more difficult things.


This is a valid sentiment / concern that was also raised in the comments section of the Google+ post. Here's a mildly edited version of my response.

...

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.


Great answer, thanks, glad to hear you've tested the alternatives and it's just that I've been away from the child learning picture too long.

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.


Honestly, I can't remember if I have, but it would be interesting to read something about it. I wonder if it's kind of the same problem as trying to teach concepts to kids that are just at the limit of their ability to comprehend even if they are naturally gifted. It's tough, man. My experience of trying to explain functions, arrays, loops and conditionals to young kids is tricky, but I think you just have to apply the same techniques as you would teaching math and eventually you'll figure out some techniques that work. You can try breaking it down into the smallest of steps and go very slowly with lots of practice. Sometimes analogies help, but sometimes not. Sometimes, you can just show them a bunch of simple examples which they'll be able to pattern match against until they can absorb it, but sometimes not. More than anything, I think you just have to be patient and experiment.

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.


Thanks for the info, great interview and site, good start to what I was looking for, much appreciated!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: