This document discusses teaching programming and computer science. It notes that programming is difficult to teach because it requires communicating complex tasks to basic hardware. It reviews Seymour Papert's view that learning is underserved academically compared to pedagogy. The document then outlines constructivist learning theory and how it guides creating real-world problem solving environments where teachers take the role of facilitator. It discusses the goal of transforming how and what children learn. Finally, it reflects on challenges in teaching IT and CS, such as where to introduce these subjects and what baseline knowledge is needed for university.