Addressing Computer Science Student Misconceptions with Contrasts
I have wanted to figure out how to use in my class the interesting findings about the use of video to address science misconceptions. The idea is that you want to use real student misunderstandings and contrast them with better, more powerful ways of understanding something. The challenge for me has been how to get those misunderstandings in class. I don’t want to call on someone that I know has a misconception and have him lay out his explanation — just to pounce on it to say, “And that’s wrong!”
Then I realized my chance this last week. I was grading the second midterm, and saw all these surprising misconceptions made evident in the students answers. Normally, the class time after a midterm is about going over the midterm answers. I decided instead to make it about the misconceptions.
I built a Powerpoint slide deck filled with these contrasting bits of code (like the contrasting explanations in the science videos) and with alternative code for answering the same problem. I tried to disguise the code so as not to embarrass any particular student. For example, I changed variable names — and since students expect that changing variable names should make plagiarized code impossible to detect, that should be enough, right?
I formed students into pairs, and then put up the slides and asked for them to respond or to answer a question in their pair. For example, I noticed that several students seemed to confuse IF and WHEN. So I put up this slide.
I asked students to punch into their clickers what they thought “A” would print out. And yes, about 20% of the students guessed something other than “1.” I executed “A” as a way of checking the answer. I then had students answer for “B.” I could hear lots of discussion suggesting that students were seeing the difference between IF and WHILE.
I put code up like this:
I had each group discuss what would be the output of this code, then took suggestions of the output from around the room. I wrote them on the board, and then had pairs vote on which answer they most agreed with. By the time we voted, everyone got it right — just generating the options, and hearing the discussion as each option went up, they figured out what the best answer was. I really liked hearing students “discovering” invariants as they talked, e.g., “The loop can never end, because you never change node1a in the loop!”
I have no real evidence of learning here — we’ll see how things go in the class. I do have a sense that this was a more fruitful activity for a most-midterm discussion than just me giving the answers and telling them why the wrong answers were wrong. That recitation of sins usually just results in students coming up to me with, “You only give me 5 points for this, but based on the discussion, I think I deserved 7.” This way, the discussion was punctuated more often with “Ohhhh — now I get it!”