I am teaching my 10-year old son how to program.
Naturally, I am using Python.
He recently has been begging to learn again. I recently had seen Python for Kids so thought we'd try some fresh material, though admittedly we never gave Hello, World a chance.
My plan is to run it as a course throughout the summer. Calling it the Altman Summer of Code. :)
I had a Mac Book Air in my desk that I wasn't using since I upgraded to a Mac Book Pro back in December. As an added incentive to keep him interested in a long term goal (long term for a 10-year old being 3 months), if he finishes the book and "passes" my review, he will get to keep the Mac Book Air he is using to learn on.
We are mostly going through 1 chapter of the book per week. Some weeks we might do 2 chapters, other weeks, I will augment with experience from my own career and knowledge.
I'll plan to post insights, things that work well, and challenges in this stream. Eventually I plan to post more coherent collections of thoughts in some blog posts.
Today we started with my introduction of what computers are, input/output, and the role of software in bringing life to otherwise dumb collections of electronic chips.
We then went through the first 2 chapters of the book which did a great job of introducing him to operators and variables.
The books shows examples and suggests using IDLE but we are using ipython instead.
Just offered to let the kids stay up late for a movie. He asked to sit in dining room and play in the shell instead.
Love it!
He has found it easier to process if I read the chapters aloud to him while he is at the computer. Maybe he is more of an auditory learner than I am. It actually was pretty cool as I was able to interject some of my own bits as we went along.
Just peeked in and saw that he was reading chapter 3 himself. :)
So we blazed our way through chapters 3 and 4.
Chapter 3 discussed strings, lists, "maps", and tuples.
I was disappointed by the use of the term "map" instead of "dict". The author does make a small mention that "dict" is another name for "map" but I found it very confusing for me.
I ended up just explaining to my son that most developers use the term "dict", though both terms are correct, and we just used "dict" in our conversation.
The string replacements, adding different items to lists, and understanding that you are adding objects to a list, including other lists, took a bit of discussion and tinkering but he "got it" in a single session, which was tested later by me quizzing him by having him do things in the shell.
The book suggests people use IDLE and examples refer to IDLE but I have opted to have him use ipython for the shell and Sublime Text 2 for editing text when not tinkering in the shell.
He is mostly in the shell at the moment.
Chapter 4 was short and quick but loads of fun as we played with Turtle.
It was a good break from the low level bits and he got a big thrill stringing together commands and watching things draw on the screen.
He asked earlier today if I minded if he tried to read ahead on his own!
No, son, by all means, I told him. Chapter 5 started with the logic constructs, if/else, etc.
He read through the entire chapter himself doing the programming puzzles at the end without asking me a single question, using the shell to figure things for himself.
Love it.
So shortly after my last post from last summer, my son lost interest in programming about as quickly as he clamoured for me to teach him.
At first I thought it was my style as a teacher or the materials we were using. It might be one of those, but as I have observed him over the past few years, he tends to just be fickle like that. For example, he has had an on again / off again love affair with golf during that span (mostly recently not interested in the game after having an incredible round, his best ever, just a month ago).
Now, my daughter wants me to teach her. I have been apprehensive about it though as I am concerned if I did something wrong with Ben that I might spoil it for Clare also, and I do not want that to happen.