Log in

No account? Create an account
December days: Teaching children programming 
2014-12-21 (Sun) 16:25
As a follow-up to my post about programming languages, [personal profile] liv asked me: "can you talk about whether you're planning to teach your children programming, and if so how?"

I'd very much like to teach my children programming, yes, for a variety of reasons. One is that it's a thing I'm personally enthusiastic about that I want to share with them. Another is that it's an increasingly useful secondary skill in all kinds of other academic disciplines, whether that's for data analysis or driving complex machinery or whatever, and I'd like them to have that be accessible to them if at all possible. And of course I think it's a worthwhile skill in its own right, as computers become more and more a part of everyday life.

On the other hand, I don't want to teach them just single bespoke skills, such as just one programming language: what I really want to impart is the mental discipline of ordering your thoughts in order to instruct a computer accurately in how to do them, which I think is an aptitude that transfers itself well to all kinds of other things, even though doing that clearly involves learning the nuts and bolts of programming (preferably in more than one languages) and especially for children it needs to involve having fun along the way. There's no point trying to teach programming to children if they find it boring, or if it's too early in their development. (I tried to teach B how to program some years ago, but honestly I hadn't prepared well enough, it fell rather flat, and by the time we revisited it he wasn't really interested, so I definitely want to prepare better this time round.)

ghoti has been planning to start with a plan she'd previously started on while TAing at primary level, namely to start with Scratch (hmm, appropriately the top featured project there is currently a dreidel game) and move on to Rhodri James's Python course. I've generally been of the opinion that it will work better if we wait until J's reading is a fair bit more fluent, and so to be honest I hadn't yet thought much about the details yet; Scratch is more visual than a lot of languages but it still has a very significant textual component.

I think this is still an area where I very much don't think I have the answers and am listening for suggestions. My criteria are that I want them to be able to progress quickly to doing things that will interest them, I don't want them to get bogged down in syntactic vinegar, but I also want them to be using (if not necessarily as the very first step) a language that isn't a toy and that they can write real non-trivial programs in, and preferably one that won't get them stuck in particularly bad habits. Python seems like a pretty good thing to aim for with the support of some decent code libraries and teaching materials, so ghoti's plan generally seems sound here, but I sort of feel the need to work through it ourselves first to make sure we aren't caught by surprise along the way.

Does anyone else reading this have experience with teaching children (other than themselves!) to program? I'd be interested in hearing about what you did.

This post is part of my December days series. Please prompt me!
This entry was originally posted at http://cjwatson.dreamwidth.org/13584.html. Please comment there using OpenID.
2014-12-21 (Sun) 17:21 (UTC)
I learnt programming in an odd way. First I learnt assembler (from various Usbourne books) and then LISP, before briefly BASIC and then C. That's basically where I'd got when I was 16, and only later the others.

I was wondering the same with E. I don't really know his personality yet, but I'm tempted to try similar if he's interested, because I used to love assembler, which I'd hand run and treat like a crossword puzzle or sudoku or whatever. It's useless as a direct skill, of course, but it makes things like references, scope, pointers, GC, etc, that I see so many people struggle with really trivial to understand. And also things like how cells of gates, flip-flops, etc work I'm sure there will be a load of people to dully teach him rote .NET or whatever if he ends up being really interested, but to understand those basic operations first might be something that's valuable not only as a foundation, but to get rid of some of the mystery and hype.

Don't know if that's a good idea or not, though.
2014-12-21 (Sun) 22:03 (UTC)
I learned with Logo, and was enthralled by the floor turtle (which, er, I think my Dad still has, but I'm not sure you could make any modern computer talk to it).

I did find that being able to type hugely increased my willingness/enthusiasm for dealing with computers at all - the ability to say things to the computer at the speed I was thinking it was super important. Clearly that came after being able to read, I'm not sure whether it makes sense to introduce typing at around the same time as writing or not?

(Also typing "properly" which I only learned to do by forcing myself to learn dvorack, having learned poor habits as a self-taught child really helped my wrists... typing tutor games, could be really for the win)
2014-12-22 (Mon) 18:16 (UTC)
My Dad has fun teaching my niece using a Spectrum emulator, and also Scratch.

Python is indeed non-toy, and pygame contains a lot of the things you wanted, however there is a bit of a learning curve.

Off-the-wall spur-of-the-moment suggestion - Javascript and HTML5? The HTML5 canvas does give you a lot of the sort of graphicsy fun that 8-bit BASICs were good for.
2014-12-22 (Mon) 23:45 (UTC)
That's true, and javascript isn't a bad teaching language (if you avoid the bad bits). It's a shame the tooling is still so weird and crappy. nodejs helps a lotm though and it runs incredibly fast (x5-x10 speed of Perl, ime, if processor or alloc bound). And canvase does have those move-to/line-to things that we all loved.
2014-12-23 (Tue) 11:40 (UTC)
I did a Basic course in about 1977 when we got our Vic20. We got an Amstrad 6128 next and daughter had some programming coaching and was going to do City and Guilds but lost interest. A friend and I were going to set up classes so that she could be in them and we'd got Mill Hill School to agree to let us use their computers on a weekend. The teacher dropped out and it all failed.Micro Bears never took off.

Grandson's dad is in programming and they do stuff together. Grandson does Code Academy and they make websites and have a Raspberry Pi which has music and other external stuff.Grandson is 8. Grandson set up a club site for his club he made for friends at school too :) I think his dad makes aps for iphones and other things. He did other coding stuff before that though.
2014-12-23 (Tue) 20:40 (UTC)
That sounds like a good outline to me, I've often wondered what would be best, but not got far enough to have any definite ideas. Now I think about it, someone suggesting logo, I'm not sure if logo is a good choice, but I think being able to draw things might often be a really satisfying way of starting, because you immediately get dramatic results, and if it goes wrong, you can often SEE what's wrong.
This page was loaded Jun 25th 2018, 12:08 am GMT.