I am a PhD candidate at Carnegie Mellon University in Computer Science Education. I taught high school and college computer science for 10 years and now study the cognitive principles that are the basis of learning to program.