Addressing Computer Science Student Misconceptions with Contrasts

April 1, 2013 at 1:35 am 2 comments

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.

An IF and WHILE example

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:

An infinite WHILE loop with a linked list

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!”




Entry filed under: Uncategorized. Tags: , , , .

Beware of the High Cost of ‘Free’ Online Courses – EU Commission launches ‘grand coalition’ to tackle IT shortage

2 Comments Add your own

  • 1. Krishnendu Roy  |  April 1, 2013 at 10:14 pm

    “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.”

    I use a free online tool called Socrative ( It is basically is clicker system. The added benefit is students can vote on their initial responses. Will save you the time to write the list of answers on the board.

    Having said that, there is no way for the instructor to select a subset of initial responses for voting.

  • 2. lenandlar  |  April 4, 2013 at 7:25 am

    I have found that asking questions like the “predict” one above results in a number of students giving a single value (in cases where the loop might run multiple times). I wonder if the “what” immediately tells some that the output is a single value?


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 9,052 other followers


Recent Posts

Blog Stats

  • 2,030,856 hits
April 2013

CS Teaching Tips

%d bloggers like this: