teaching him assembler so he knows what's actually going on.
You may think I'm crazy, but I'd go even more bare metal than that. Teach him resistors and capacitors (make weird noises through a speaker), then transistors and flip-flop logic with some projects that make LEDs blink.
Then jump asm (to learn to address the metal) to Basic/Python (to learn logic and structure and say Hello World) to C (put the two together). Use plug-together electronic kits (what radio shack used to make but is now rebranded as "Maker" type stuff or robots). The truly hands-on path worked wonders for me, kept me interested at all stages, and I tell you I was grateful to learn each new abstraction tool. My daughter is five and loves to fiddle with my scope/things on my bench; I can't wait.
The weakness in the teaching toolchain I see at the moment is the asm-teaching stage, at my young age it was the Apples and Commodores, nowdays I'm thinking microcontrollers but I haven't really looked for good intro projects yet, any particularly good specific suggestions?