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