In Stuart Reges’ paper The Mystery of “b := (b = false)”. He analyses the correlations between the questions on the 1988 Advanced Placement exam in Computer Science. He found that there were several problems that had a high correlation with all of the other problems. In other words, if students successfully solved these questions they were more likely to solve the other problems. Stuart refers to these questions as powerhouse questions.
We discussed the possibility that the difficulty of these problems was with the assignment operator. Students are first introduced to the = symbol in mathematics. Then, when they are reintroduced in programming, the students must create a new mental model of what = does. It requires thinking about variables values before the assignment statement as well as after. These problems require thinking about the dynamic state of the program. This is a concept which many students have not been introduced to. The students who do understand these problems thus have a better understanding of how programs work.
While this idea was portrayed in the paper as well as our discussions, there was some disagreement with it. For example, Grace suggested that it was more a problem with the concept of Boolean values. Many students are able use conditional statements but do not grasp the concept that the condition simplifies to a Boolean value. So with a problem such as b := (b = false), they do not see (b = false) as having the value true or false. They cannot determine what b is being set to because of this misunderstanding of Boolean. This idea is backed up by the numerous students in 142 who have consistent trouble with Boolean values and Boolean Zen.
Both of these ideas, of why powerhouse problems are such a good indicator, reflect a problem with the abstract understanding of programming rather than the complexity of the problems. Ben brought up a quite interesting point about the difference between pattern matching and understanding. There are many students who can excel at math and programming but have little understanding of the abstract concepts of what they are doing. Rather, they are really good at pattern matching. They can tell what they need to do and how to do it, but have little concept of the overall picture. The example that Ben gave us was some of the students he works with are able to manipulate equations to change the physical appearance of the graph. They know where and what to change to get the graph to change but they don’t grasp why it changes.
This problem of not understanding the why behind things could very well be why these powerhouse problems are such a good indicator. They require that the person solving them have a strong understanding of why and how programming statements have the effects they do. This would imply that the students who were successful in pattern matching would have a more difficult time with problems like b := (b = false). In his paper, Stuart Reges, states that test makers should not pack their tests full of powerhouse problems. He says that these problems might be more useful as practice problems because they will illuminate what the students don’t understand fully.