As a programmer I would propose to you the following:
Abstract thinking, Pragmatic Thinking, Higher problem solving. Design Patterns (Not programming in general but building. Building in sense of building, construction. Did you know that design patterns come from designing buildings and problem solving in engineering?)
Also I would recommend starting with the famous little programming language for kids: Logo. There are actually pretty good games to get your kid started.
But you can Google that so I wont bother copying in those results. Your main goal is getting his attention and getting him to think like a programmer, or at least start to think like one.
After that you can start with applying the knowledge to algorithm and lower problem solving and object oriented programming.
Also I would recommend using Mind Maps, since kids tend to remember shining colorful things better. http://en.wikipedia.org/wiki/Mind_map
As a kid I loved automating everything. That's why I'm an automation test engineer today. It might be fun to show your kid how you can automate tasks. How you can manipulate the windows, and everything what you PC does. Also some real world interaction like OCR with a video feed perhaps. Or a basic motion tracking system with a cheap camera.
I think the kid would be very happy if for example he could spot if his parents are nearing his room. Or build a little LEGO robot and program a routine into him, like go get me milk. Which is difficult but get's him started and will have a goal too and a real life experience which is VERY important in the early years.
See : Lego Mind Storm: http://mindstorms.lego.com/en-us/Default.aspx