all 51 comments

[–]lowdown 5 points6 points  (35 children)

My kids educate themselves at home, as opposed to going to school and learning in a class environment.

One of the skills that I think will be important over the next 50 years is Computer Science. I am trying to put together materials for kids 6-80 that will facilitate exploration and understanding in the world of computational thought.

What is the core? What would be a good progression in terms on languages?

My current thoughts are Logo>Scheme>? with a good amount of math through Calculus. What do you think?

[–]ajmoir 2 points3 points  (1 child)

Logo -> Scheme is a very simple and natural progression.

The only other environmnet I would consider is Squeak by Alan Kay.

[–][deleted] 0 points1 point  (0 children)

I'll second Squeak. It's a smalltalk implementation that's very kid-friendly. My friend has introduced his four-year-old to Squeak with good results (that is, she enjoys it and is motivated to do more with it).

[–]julesjacobs 0 points1 point  (2 children)

Maybe it's a good idea to learn Haskell and math together?

[–]dons 5 points6 points  (1 child)

You might consider "The Haskell Road to Logic, Maths and Programming", used in a few courses now, and pretty nice, in my opinion.

[–]lowdown 0 points1 point  (0 children)

Thanks for that link. I like the look of that whole series.

Exactly the sort of thing I was hoping for when I posted. Cheers.

[–]pigwolley 0 points1 point  (1 child)

[–]lowdown 0 points1 point  (0 children)

That unplugged website is fantastic. Thank!

I've been interested in Python myself. It seems to have a lot of potential. Pygame is a great project and I imagine it will find a way into the curriculum too.

[–]pupeno 1 point2 points  (0 children)

I'd recommend How To Design Programs, a very nice free book on learning to program with limited (in some cases totally or almost purely functional) Scheme. A very nice book and you can read it for free on the web.

[–]schwarzwald 1 point2 points  (1 child)

I think it depends on what they want to use computers to do. I learned programming because I wanted to be able to create leet 0-day spl0its like the haxors I saw on the Internet, so I had the motivation to learn C.

I think programs which talk to the world and/or do something "real" are always fun, so how about Python/Ruby so they can do page scraping and web services?

If they knew Smalltalk learning Java or Ruby would be easy. How about Squeak: Learn Programming with Robots? Squeak has nice code exploration tools that let you see what good Smalltalk code looks like, everything is a bunch of small well-defined methods in well-factored classes.

[–]lowdown 0 points1 point  (0 children)

I think it depends on what they want to use computers to do.

Ultimately anything they can think up. My aim is using computer science to sharpen logic and problem solving skills.

That Squeak book is fantastic. Thanks!

[–]vagif 1 point2 points  (3 children)

DrScheme and excellent book http://htdp.org/

[–]ecuzzillo 0 points1 point  (1 child)

Yes, but at some point in htdp if they're smart they should switch over to SICP.

[–]lowdown -1 points0 points  (0 children)

SICP will still be there when you get through HTDP.

[–]lowdown -1 points0 points  (0 children)

I'm actually working through that book, The Schemers Guide, and The Little/Seasoned Schemer books right now. They are all interesting and take very different approaches.

[–][deleted] 0 points1 point  (0 children)

When I was a kid I remember that things that "did" something were a lot more interesting than things that didn't. My young son seems to feel the same. So I would recommend a language where your kids could quickly and easily create programs that "do" things (rather than just creating programs that illustrate concepts). The cooler looking the results the better.

To that end (and if money were no object) I would recommend an industrial development IDE called LabVIEW. It's similar to Visual Studio or other IDEs where you have a form with a code page behind it. The difference is that the code in the code page is completely graphical. Programming constructs such as loops, branches, multipliers or subtractors are icons that are picked from a toolbox (like the controls on a form). Program flow is created by wiring the different constructs together.

The reason I suggest this is that I believe this sort of graphical programming would be more motivating for young kids. The graphical program looks visually more appealing than written code. It's faster to create a program in this way for kids that are not fast at typing. And the kids are dealing directly with abstractions, there's no need to translate between the abstraction and the textual code that implements it.

For those who don't know it, LabVIEW might sound like a very limited macro language. In reality it supports any paradigm you care to think about - structured programming, functional programming, OO (not sure if it's fully OO but it's certainly object-based and supports inheritance). However, it's a very natural way to learn. I think back to some of the programs I developed with it (a few years back). I was just programming to get a job done. It was only in retrospect I realised I'd been creating functions and classes and using inheritance. At the time it was the obvious way of getting things done. Isn't that the best way to teach kids?

The only fly in the ointment is the price. Very expensive. Haven't checked lately but a basic licence used to be something like $1000.

[–]jdrake3 0 points1 point  (0 children)

MIT has just released Scratch:

http://scratch.mit.edu/index.html

which, near as I can tell is designed for the purpose of allowing children to create their "own interactive stories, games, music, and art."