When I got married last year, I acquired a nephew. This week, our nephew is staying at our house. The purpose is for me to teach him programming.
We bought our nephew a cheap used computer and installed Linux and Logo on it. He and I sat down last night for his first learning session.
I've never really "taught" programming to anybody (though I've lent a hand with Perl, Expect, and questions for several other languages at times), but it wasn't long until I realized the boy is basically teaching himself. My purpose is to provide new commands and suggest experiments.
I was a little worried that he would find this boring, but a spark lit up in his eyes almost immediately. It might help that he is a math-science oriented person.
I discovered quickly that I can really fan that flame by not telling him things, but letting him discovering on his own. Rather than pointing out his error when he leaves out the space between FD and 50, for example, I let him find out himself. It's hard to suppress that instinct, but it means he doesn't feel like I'm constantly correcting him, and learning the lessons on his own reinforces them so much better than me always reminding him.
As he experimented I asked lots of questions. When I say he's science-oriented, I really mean it. He addressed almost everything using the scientific method, informally. "Question, Hypothesis, Experiment." Rinse, lather, repeat.
My nephew figured out 90 degree angles on his own (he'd never heard of "degrees" before), as well as 180, 360, and 45. He managed to estimate the distance of the hypotenuse of a right triangle, though if I used those words he would have no idea what I was talking about.
The most interesting comment was when he suddenly exclaimed, "This is a lot better than Game Boy!" A later comment was, "I can't wait to tell my mom I found something I like better than Game Boy." I happen to know his mother will be very pleased to hear that.
He was also pretty happy when he found out he gets to keep the computer. (And since just prior to finding that out he was expressing his need to find out how to put Logo on his mother's computer, I know his mother will be happy about this, as well.)
Tonight I've promised to teach him how to put together lists of commands into programs.