1. Learning computer science is surprisingly hard, but drawing on lessons from learning sciences can help improve learning.
2. Live coding in class is like demonstrations, which only help if students make predictions; subgoal labeling also improves learning and transfer between languages and problems.
3. Programming can be taught efficiently with little coding through activities like Parsons problems, examples, and practice problems.