To keep us occupied during the summer months my eldest daughter (aged 9) and I have decided it would be fun if I were to teach her programming. For obvious reasons Perl is my language of choice but the problem I have is in devising a syllabus that will both teach her the rudiments and keep both her and me entertained.
(Sadly) As I guess that most of the monks are closer to their childhood than I am I would be interested in any suggestions that you have on appropriate topics that will lead us from the basics through to more advanced topics.
It’s not that the teaching worries me – I’ve done lots of courses on lots of topics but mainly to “computer literate” people – and in general they understand what it is you are trying to teach them and why. But perhaps this is very difficult and very different to convey to a 9-year-old.
As a first shot I was thinking about something on the lines of:
Suppose you spend x at a shop and give a note of value y – how does the shopkeeper give you change?
Teaches: simple arithmetic, looping, lists, sorting, etc. – and also relates well to the real world.
The first “useful” program I wrote did ‘straight line of best fit’ - given a set of x,y coordinates it told you the mean x,y value and the intercept on the y axis. Historical Note: this was written in BASIC and ran using a dial-up connection to a time sharing company with an acoustic coupler (ask your parents!) – I later converted it to ALGOL. At the time this made sense to me as, in 1970, I was doing O-Level (I don’t know the US equivalent but it’s the exams you do at age 16) physics and chemistry. Then I got more interested in maths and the next program solved cubics – Newton-Raphson iteration to find the first root, synthetic division to turn the cubic into a quadratic solved by the usual means. And on and on but always with a practical basis.
So my background has been programming as an aid to solving problems rather than something in itself – my problem is how do I translate this into something that a 9 year old will be enthusiastic about and learn from? – and that both of us will enjoy and learn from>
You have lots of time to think about this and we can discuss suggestions – we are planning to start in July – if people are interested in this topic then I will be more than happy to provide regular feedback on how we are getting on.
Update: Thanks to everyone who has commented on this node - I'm very impressed with the feedback that has been provided - I'm now working slowly through them so that I don't miss any important points