Make him a language: let me elaborate. Use Python or Ruby and write a library of functions that he can call in particular ways that will make a "game." Let him learn how they work, and let him dive into the source code and figure it out and eventually make his own functions and classes and ... etc.<p>Discovery is the most rewarding part of learning to program, and having fast payoffs is always nice to keep a kid interested. Worked for me (I started with Logo around his age, but Python/Ruby is <i>way</i> better.)