6 ms·
Kid's intro to programming: ideas?
I've been extorted into introducing the neighbor's daughter (and possibly her slightly younger brother) to programming concepts this summer. She will be entering sixth grade (middle school) in the fall. I'm aware of a few possibilities which have educational materials:
- Storytelling Alice (Windows only, I'm Mac).
- Scratch, built on top of Squeak by folks at MIT (I'm currently leaning towards this).
- Squeak itself.
- Hackety Hack, for Ruby. (Currently Windows only, and apparently on hiatus. Looks really neat though).
Any other recommendations? Where's "A Young Lady's Illustrated Primer" when you need it?
- taylorbarstow 18y agoI wrote my first program in QBasic (!) Somehow I ended up with a floppy disk which contained the game nibbles. I was playing around with the computer and realized I could look at the source code. Then I started messing around; I wrote a guitar tuner, and a quiz program. Seems like the biggest hurdle will be getting them interested and thinking for themselves (for example, if you ask them to write whatever kind of program they want, how the heck are they going to know what's possible?)
- mechanical_fish 18y agoYou scared me when you claimed that Hackety Hack is "on hiatus". But, no, a look at http://hackety.org/ http://hackety.org/ suggests that _Why is just on one of those epic hacker side-tracks, like Knuth went on when he took a decade-long break to invent TeX. To make Hackety Hack work well cross-platform, _Why had to invent a cross-platform Ruby-based toolkit for web-like apps (Shoes) and he's still kind of polishing that. So I don't think Hackety Hack is dead, yet. It may merely be cocooned, preparing to burst forth like Mothra and blow us all away with hurricane force.
- nertzy 18y ago"This project is currently on suspension while I work on Shoes. Expect a new release, based on Shoes, some time before 2008's end." from http://code.whytheluckystiff.net/hacketyhack/ http://code.whytheluckystiff.net/hacketyhack/ Given the amount of work he's put into shoes, I think he will easily be able to make this date.
- andr 18y agoWhat about Lego Mindstorm?
- Spyckie 18y agoI would say Storytelling Alice, but the scheduled release date for 3.0 is summer of next year. I've used Alice 2.0 and am satisfied with the experience, but the model library lacks if you're doing anything more than a nice neighborhood scene... I'd go with something that has a large quality graphics/model library. Its good learning how to code, but its even better to feel proud of what you've created, and having an application, movie, or game that looks nice and polished is crucial for that feeling of accomplishment.
- Shooter 18y agoScratch!
- bootload 18y ago"... I've been extorted into introducing the neighbor's daughter (and possibly her slightly younger brother) to programming concepts this summer ... Any other recommendations? ..." Here's one that might be worth considering. Kids like to draw. So get them to draw something on either paper then scan it or on the screen with a paint program. Save the image(s) to either a .png or .jpg format. hand drawn images + browser + Processing.js Then head over to http://ejohn.org/blog/processingjs/ http://ejohn.org/blog/processingjs/ then check out the sprite example ~ http://ejohn.org/apps/processing.js/examples/basic/sprite.html http://ejohn.org/apps/processing.js/examples/basic/sprite.ht... Forget python, squeak, ruby. Arc and lisp can wait. Think browser as your OS and Processing as your language. The bonus of creating their own images then given some bits of code to change the numbers. Let them fail a few times. Most important is getting an immediate result. This is probably the simplest environment that most kids are familiar with, a browser. So use it. There are plenty of examples ~ http://processing.org/learning/basics/ http://processing.org/learning/basics/ the system is FOSS and x-platform. The example also allows them to create their own "Illustrated Primer" with powerful tools yet still simple to use.
- steelhive 18y agoThanks for the suggestion. Some time ago I'd looked at Processing for my own use. I hadn't even considered it as a platform for teaching. It would be certainly be interesting to have a kid-oriented programming environment (like that for Scratch) built on top of this.
- falsestprophet 18y agoPython: fortune favors the bold
- mdakin 18y agoWhat about "The Little Schemer"? I remember thinking it would be a great book to teach a smart little kid about computer science. Unfortunately I don't have it with me right now (and won't anytime soon) so I can't confirm my memory. I think it would take a lot of direct interaction with the kid; the book in one hand, a Scheme interpreter running on the computer and a live coach to ask good questions and explain. If done well this could be an amazing learning experience for the right sort of gifted kid.
- steelhive 18y agoThe Little Schemer series of books might be my very favorite programming books of all time. But even though they look like they're for kids, I think they might be a bit too challenging. They even teach about the Y combinator. :-) I do wish there were some nice scheme books for a younger audience though.
- kylec 18y agoThey even teach about the Y combinator This is great news. In his essays, pg has repeatedly expressed interest in the Y Combinator enabling younger people to start startups - why not 11 or 12 year olds? They can grow their service functionality and user base after school, present their software to investors on the weekends, pursue rounds of funding during school vacations, and either IPO or get acquired by the time they graduate high school. ;) I jest, of course, but it's an interesting idea. Sort of a high-powered lemonade stand for entrepreneur youth. With respect to the real Y combinator, it may be a little challenging for those without a foothold in the field (such as children) because if you don't know what recursion is it can be hard to see what's so special about it.
- mdakin 18y agoI think it really depends on just how gifted and motivated the student and teacher happen to be. I admit it probably would not work for most student/teacher combinations. But imagine understanding the Y combinator before the age of twelve! It would be beautiful. Lots of little kids can handle much more math and rigor than they get in traditional schooling.
- bwh2 18y agoWhat about ActionScript (Flash)?
- DTrejo 18y agoCheck out http://www.bfoit.org/itp/itp.html http://www.bfoit.org/itp/itp.html They teach kids using Alice and also jLogo. I've taken the jLogo class and that is how I became interested in programming during high school.
- dev_eddie 18y agoDo it right thing from the beginning. I was teached basic when I was a child, and it crippled by brain for programming. I had to unlearn and forget loads of crap. I say use python, because it is clean, multiplatform, multiparadigm, has console (ie. immediate incentive to see if the thing is working and why), powerful, and has batteries included. Once you can use python, jumping to C++, C# or Java is not that hard.
- mynameishere 18y agoWhat about soldering irons and relays?
- jdale27 18y agoSICP
- dhotson 18y agoHaha.. I actually LOL'ed at that. .. I hope you're not being serious.
- mickt 18y agoI've no idea how old 6th grade is (didn't go to US highschool), but wouldn't the OLPC, http://laptop.org http://laptop.org , be ideal for a kid to learn programming? They looks at the code of all the applications running on the OLPC and change them on the fly.
- astine 18y agoIn the US, children usually enter 1st grade at age 6. She should be about 11 or 12.
- tkosan 18y agoYou might try the "Professor and Pat" programmer newbies books: http://professorandpat.org http://professorandpat.org I have had students as young as 10 make it through the programming newbies series of books on this site with a little help.
- astine 18y agoI learned to program around 5th grade (age nine) in Turbo Pascal. I found writing command line oriented programs pretty easy and straightforward. It wasn't hard to learn the concepts and write the code. If the girl is anything like I was, I'd suggest teaching a basic scripting language, (Perl, Python) on a CLI. Personally, I'm against insulting a child's intelligence with a toy meant to baby them. When I learned to program, I built practical things I could use. When I hit toy languages, I got very frustrated by their limitedness.
- Frocer 18y agoAnother vote for Turbo Pascal! It was my first language as well and it really set a foundation for me. It was easy to pick C/C++, Java, etc. afterwards. I think the kids must have genuine interest of computers in order to learn programming, or you have to somehow generate that interest. I picked up programming in high school, and I thought it was fascinating because I was already very familiar with computers. However, if I were to learn programming in 6th grade when I know nothing about it... I think I would be both confused and bored. It may be a challenge for you if the kids aren't too familiar with computers (I guess it's doubtful in this age...)
- ghiotion 18y agoWhat about HTML + javascript? Very visual with instant feedback. You get the programming stuff with javascript (an under appreciated language) and introduce the concept of a structured document with HTML. You can use firebug as an intro to debuggers too.
- tx 18y agoThis will only teach them how ugly hacks were made, not how proper software should be. Even now, when we have strict HTML and CSS2 and some decent browsers, I still get chills sometimes at how fugly this whole "web-development" is... These "technologies" weren't meant to be what we use them for.
- ghiotion 18y agoYes, but the idea seems to be to introduce them to programming concepts: variables, if/else, do/while, etc. The advantage of HTML and javascript is that it's very easy to see how a button click causes some logic to execute. It also shows them that programming can be done in a simple text editor using only tools you already have at your disposal, by virtue of having nothing but a computer.
- tx 18y agoIt's not. Not easy - have you done anything else besides web development? VB6 is a far better tool for what you are saying. Just because 99% of people here dream of becoming .com-millionaires doesn't automatically turn these fashionable "technologies" a best way to introduce a kid to programming. The absurdity of misused web "apps" for commercial purposes is one thing (especially if you get paid at the end), but fucking up someone's education is just cruel.
- hillel 18y agoI had a post on this same topic. Lots of good suggestions in the post... especially if you want to start from the perspective of making video games. http://www.jacksonfish.com/blog/2007/08/28/programming-for-kids-and-rolling-your-own-videogame/ http://www.jacksonfish.com/blog/2007/08/28/programming-for-k...
- niels_olson 18y ago<blockquote>Where's "A Young Lady's Illustrated Primer"</blockquote> How to the Think like a Computer Scientist is a pretty good primer for python.
- stcredzero 18y agoSqueak eToys include a lot of nice goodies. You need to play around with them enough to be able to guide them through to get the most out of them, however. (This probably goes for anything mentioned as a suggestion, of course.) If you want to make them really uber: From Nand to Tetris in 12 Steps! http://www.youtube.com/watch?v=JtXvUoPx4Qs http://www.youtube.com/watch?v=JtXvUoPx4Qs All the courseware is open source.
- doncampbell 18y agoScratch is very cool. I've got young kids now and was introduced to computers as a kids so I think its a great idea to learn through games. I blogged about this on http://kidconfidence.com/blogs/2007/05/28/learning-how-computers-work-through-video-games/ http://kidconfidence.com/blogs/2007/05/28/learning-how-compu... saying HTML/JavaScript is a great way for kids to start learning how to program. Also check out Chipwits.com for learning logic. -Don
- xirium 18y agoTeach Logo. It teaches geometry, block structure and subroutines. Kids get instant graphical feedback. It also smoothes the beginning of the learning curve because you can get interesting output without understanding loops or variables.
- LKM 18y ago- Some HyperCard clone (very easy to learn concepts) - JavaScript (runs everywhere, easy to create simple things like games without much work)
- natch 18y agoYou've been extorted? Well, pass the extortion right on down. Or, do what I do, bribery. Earn a bankroll of neopoints at neopets.com, and give them out as payment for programming exercises completed. My daughter (nine) just earned 30,000 neopoints from me yesterday for doing three easy Python programming exercises (where easy, starting out, means something like "cut and paste this and get it to run, with help from Dad allowed" and then goes from there). How to earn lots of neopoints? Neopian stocks, mostly. Scratch is so good you can even use Scratch time as a reward, if you're mean enough to do that. For editing of Python, we're trying out Pico, which is like an Emacs lite, with the main useful commands clearly shown at the bottom of the screen.
- xenoterracide 18y agoweb programming, it's something they can see the results of right away and prettier sooner. You must keep them interested, imho. on top of html/css show them js and php/mysql perhaps even teaching them ajax (you can sub php/mysq for preferred lang, db).
- jsa 18y agoI might consider taking this way: “My 6 year old son is learning computer programming by first understanding the mathematical foundations, then applying what he has learned using Haskell, because it is short and natural (he doesn’t even know what Haskell is)” http://blog.tmorris.net/does-java-cause-self-delusion/ http://blog.tmorris.net/does-java-cause-self-delusion/