More people are learning to code than ever, but most learning opportunities do not explicitly teach the problem solving skills necessary to succeed at open-ended programming problems.
In this paper, we present a new approach to impart these skills, consisting of:
1) explicit instruction on programming problem solving, which frames coding as a process of translating mental representations of problems and solutions into source code,
2) a method of visualizing and monitoring progression through six problem solving stages,
3) explicit, on-demand prompts for learners to reflect on their strategies when seeking help from instructors, and
4) context-sensitive help embedded in a code editor that reinforces the problem solving instruction.
We experimentally evaluated the effects of our intervention across two 2-week web development summer camps with 48 high school students, finding that the intervention increased productivity, independence, programming self-efficacy, metacognitive awareness, and growth mindset.
We discuss the implications of these results on learning technologies and classroom instruction