Comment Don't teach, enable him to Do (Score 1) 1095
Attempting to show him how to program, just for the sake of learning to program won't work. He'll get bored.
What he needs is something that he can 'DO' that requires him to program, then he will be motivated to learn the programming end of it.
My suggestions include:
* Game programming - You can use something like Garage Games' game builder suite. It's relatively inexpensive and it works on Linux if thats the way you want him to go, or you can use their XNA version and you son can make his own games for an XBOX 360.
* LEGOs - Get him a LEGO NXT set and help fund experiments into building robots. The NXT has it's own visual language, but there's also C, Java, C#, python, LUA and other alternative development environments for it.
* For web programming, look at his other hobbies and see if there's some kind of website that he could create to support or promote that hobby that he could use a LAMP system to develop