The present study explored passive, active, and constructive methods of learning problem solving procedures. Using subgoal learning, which has promoted retention and transfer in procedural domains, the study compared the efficacy of different methods for learning a programming procedure. The results suggest that constructive methods produced better problem solving performance than passive or active methods. The amount of instructional support that learners received in the three different constructive interventions also affected performance. Learners performed best when they either received hints about the subgoals of the procedure or received feedback on the subgoal labels that they constructed, but not when they received both. These findings suggest that constructing subgoal labels is better than passively or actively engaging with subgoal labels. Furthermore, there is an optimal level of instructional support for students engaging in constructive learning and that providing too much support can be equally as detrimental as providing too little support.