Motivation: Apply subgoal learning to programming education to determine whether it can be used to improve performance in computer science courses.
Subgoal learning: It can be very difficult for instructors, who are experts in the field, to explain procedures at a level that is easily understandable to students. Enter subgoal learning. Subgoal learning has improved learning in STEM domains (e.g., Catrambone, 1998) because it breaks down problem solving procedures into steps that novices can grasp.
For example, how would you explain to an Algebra 1 student how to solve for x, 4x – 8 = 2x + 6? If you were using subgoal learning, it would look something like this.
|4x – 8 = 2x + 6|
|+ 8 + 8||Isolate variable|
|– 2x – 2x|
|4x – 2x = 6 + 8|
|2x = 14||Simplify terms|
|x = 7|
The text on the right describes the subgoals of the procedure. The function of the first couple of steps is to isolate the variable, x. The function of the last couple of steps is to simply terms until x has a coefficient of 1. Explaining the functions of these steps is what instructors typically overlook because they are so obvious to an expert that the instructor doesn’t realize that they need to be explained to a novice.
What makes subgoal learning unique from similar instructional techniques is that subgoal labels, the labels that describes the function of steps (“Isolate variable”), are independent of the context of the example. Instead of saying “Isolate variable x,” it is simply “Isolate variable,” meaning that it can be applied to any problem of this type. This context independence helps learners see through the context of examples to find the structure of the problem solving procedure.
Why programming education: Programming education has a few unique issues that make it more difficult to teach than your average bear. The biggest issue, in my opinion, is that programming students have to learn a programming language while they are learning problem solving procedures. That is like trying to learn to solve math problems using a number system other than Arabic numerals (assuming you typically use Arabic numerals). This high cognitive demand while learning is the type of issue that subgoal learning can help fix.
Results: In three experiments that compared unlabeled (i.e., conventional) worked examples to subgoal labeled worked examples for teaching a programming task, subgoal labeled worked examples improved problem solving performance all three times. In my opinion, the most interesting finding was from Experiment 3. This experiment had participants who were K-12 teachers who wanted to become certified to teach computer science, likely meaning that they were a bit more motivated to succeed than the undergraduates from Experiments 1 & 2 who had little to gain from participating. In Experiment 3, the difference between groups was larger than in the other experiments, meaning that the subgoal labeled worked examples helped the K-12 teacher learn more than the undergraduates.
Why this is important: Many programming instructors believe that students are either inherently good at programming or not. This view is absurd (and likely contributes to the field being dominated by White or Asian men). We need to find better ways to teach all computer science students. This research shows that learning subgoals can improve the problem solving skills of students learning to program, a notoriously hard skill to learn. In addition, subgoal labels was a particularly effective tool for learners who are motivated to learn, like the K-12 teachers. Computer science education research is a growing, and desperately needed, field, and this study contributes to it.
Margulieux, L. E., Catrambone, R., & Guzdial, M. (2016). Employing subgoals in computer programming education. Computer Science Education, 26(1), 44-67. doi: 10.1080/08993408.2016.1144429
Catrambone, R. (1998). The subgoal learning model: Creating better examples so that students can solve novel problems. Journal of Experimental Psychology: General, 127(4), 355-376. doi: 10.1037/0096-34220.127.116.115
For more information about the article summary series or more article summary posts, visit the article summary series introduction.
4 thoughts on “Article Summary: Margulieux et al. (2016) Employing Subgoals in Computer Programming Education”
Pingback: Article Summary: Series Introduction | Lauren Margulieux
Pingback: Article Summary: Margulieux & Catrambone (2018) Finding the Best Types of Guidance for Constructing Self-Explanations | Lauren Margulieux
Pingback: Article Summary: Margulieux et al. (2018)Varying effects of subgoal labels in 3 STEM fields | Lauren Margulieux
Pingback: I’ve been a computing education researcher for 8 years and just took my first programming course: Here are 5 things I learned | Lauren Margulieux