As a follow-up to my post about
programming languages,
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.