6 ms·
My New Strategy for Teaching Kids How to Code
- krrishd 13y agoMaybe you could check out teen2geek.com when its released? It's mainly for students like yours, so that could be helpful to them.
- AceJohnny2 13y agoThe "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...
- wslh 13y agoI 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.
- famousactress 13y agoSeconded. 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 :)
- Pitarou 13y agoLogo 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?
- Angostura 13y agoI 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
- pramalin 13y agoI 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 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.
- ronilan 13y agoBased on limited experience with younger kids and http://scratch.mit.edu/ 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.
- jrochkind1 13y agoi'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.
- pbhjpbhj 13y agoI'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?
- wil421 13y agoI 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.
- SkyMarshal 13y agoThis 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 http://www.trollope.org/scheme.html [2]: http://paulgraham.com/avg.html http://paulgraham.com/avg.html [3]: http://news.ycombinator.com/item?id=6553155 http://news.ycombinator.com/item?id=6553155
- krrishd 13y agoI 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.
- bobx11 13y agoI 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.
- sopooneo 13y agoJason, 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.
- marcosdumay 13y agoNot the author, obviously... You mean the photo? It's an img with a border radius and a shadow.
- sopooneo 13y agoNo, I was referring to one of the challenges he presents to his students. There's a link in the post.
- jayro 13y agoWow, 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. ;))
- dpaluy 13y agoI started teaching kids Ruby on Rails with Nitrous IO virtual web environment and it's pretty good. https://www.nitrous.io/join/ByKc2ypawx0 https://www.nitrous.io/join/ByKc2ypawx0
- stephp 13y ago100% 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.
- drakaal 13y agoI 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.
- benohear 13y agoJason, 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)