Como programador, proponho a você o seguinte:
Pensamento abstrato, pensamento pragmático, maior resolução de problemas. Padrões de Design (Não programando em geral, mas construindo. Construção no sentido de construção, construção. Você sabia que os padrões de design vêm do projeto de edifícios e da solução de problemas em engenharia?)
Também eu recomendaria começar com a famosa e pequena linguagem de programação para crianças: Logo. Na verdade, existem jogos muito bons para começar seu filho.
Mas você pode pesquisar no Google, então não vou me incomodar em copiar esses resultados. Seu principal objetivo é chamar a atenção dele e fazê-lo pensar como um programador, ou pelo menos começar a pensar como um.
Depois disso, você pode começar aplicando o conhecimento ao algoritmo e reduzir a resolução de problemas e a programação orientada a objetos.
Além disso, eu recomendaria o uso de mapas mentais, pois as crianças tendem a se lembrar de brilhar melhor as coisas coloridas. :) http://en.wikipedia.org/wiki/Mind_map
Ohhh também ... eu esqueci, mas isso pode ajudar.
Quando criança, adorei automatizar tudo. É por isso que sou engenheiro de teste de automação hoje. Pode ser divertido mostrar ao seu filho como você pode automatizar tarefas. Como você pode manipular as janelas e tudo o que seu PC faz. Também alguma interação no mundo real, como o OCR, com um feed de vídeo, talvez. Ou um sistema básico de rastreamento de movimento com uma câmera barata.
Eu acho que o garoto ficaria muito feliz se, por exemplo, ele descobrisse se seus pais estavam se aproximando de seu quarto. :) Ou construa um pequeno robô lego e programe uma rotina para ele, como ir buscar-me leite. O que é difícil, mas comece com ele e também terá um objetivo e uma experiência de vida real MUITO importante nos primeiros anos.
Veja: Lego Mind Storm: http://mindstorms.lego.com/en-us/Default.aspx