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