To help instructors verbalize this information, we have used a task analysis procedure with introductory programming instructors to identify subgoals of basic programming procedures. Subgoals are functional pieces of the problem-solving procedures, like defining continuation or termination conditions for while loops.
Using these subgoals, we developed a series of worked example and practice problem pairs for learning to evaluate and write expression statements, selection statements, loops, methods, arrays, and classes (using objects and writing classes).
Based on our research, students solve novel problems better when they understand the subgoals of the problem solving procedure. This research started with problem solving in block-based languages and in laboratory settings to determine the size of the effect. In these settings, learners performed 7-8% better on assessments when they received subgoal-oriented learning materials. Recent work has applied subgoal-oriented materials to a Java-based introductory programming course, with data collected from class assignments and tests. We found that the subgoal-oriented materials help students to perform better in this learning environment as well, especially early in the learning process and for students who are struggling in the course.