How should young children approach programming

As NSF and the academic computer science community strive to improve the quality of high school computing instruction, there are proposals afoot that could drastically reshape this landscape. Why wait for high school, or even middle school, when we could be teaching programming in primary school? How should we do that? Highly scaffolded environments such as Scratch and Alice offer young children some assistance with syntax, but I would argue that they are not optimal for very young novice programmers because they use sequential control flow and a graphics programming model. In contrast, Microsoft's Kodu Game Lab uses a parallel conditional rule formalism (as do AgentSheets and AgentCubes), plus a robot programming model with a physics engine. Together these allow young children to produce complex, engaging behaviors with just a few lines of code. But the carefully crafted constraints that make Kodu so effective for beginners come with a price. Migration to a more conventional framework such as Scratch is an attractive next step.