Misconceptions and Teaching Them

Collecting and Categorizing Misconceptions

What to pay attention to.

I read the paper Habits of Programming in Scratch by Orni Meerbaum-Salant mentioned in Mark Guzdial’s excellent Computing Education Blog.  It is not at all surprising after trying Scratch.

Guzdial has an interesting earlier blog entry My Students Know Far Less Than I Ever Expected about being surprised at students beginning data structures knowing far less than he expected.  The misconception is basically about the practice of detailed analysis of questions and problems that CS courses are expected to teach.  Respondents remark that the subject was a “trick question” that even some of them got wrong when they first saw it.  It also suggests misconceptions about the meanings of code.

Here is a copy of a reply I added:

Having taught data structures many times, I am not at all surprised by the outcome of the problem, even after the class discussion.

The main misconception that the students have is about what they must pay attention to when they face examples of programs and questions about them in order effectively learn elements of the discipline.  They must often attend to the same things of course when they write or debug their own or other peoples’ code. Even the professionals, who rightly observed that the problem is a “trick question”, fell for the trick, I guess, because they did not realize that they needed to turn on the mode of detailed code and question analysis rather than recognize a familiar pattern.

How can we teach “what it is you must pay attention to”, teach the habit to pay attention to that when it is appropriate, and teach how to recognize the situations where particular things to pay attention to are appropriate?

Should we tell the students that certain in-class questions are the kinds of questions that they must ask themselves while they are engaging in disciplinary work, necessary for that work to be effective?

Research on Misconceptions.

Yesterday, I found some research particularly germane to classifying and addressing misconceptions in elementary programming:

UUhistle: misconceptions about variables surveyed and addressed.

UUhistle, A Program Visualization Tool for Introductory Programming Education distributes a Java applet that animates at a fine grain level a simple model for Python execution that includes the creation and assignments to variables.  It is backed up by research: The project is part of Juha Sorva‘s doctoral dissertation.

From the same academic program, the master’s dissertation of Juha Helminen addresses both the issues of problem solving skills and of misconceptions.  Here’s a page of many links to its publications.

Sorva’s paper “The Same But Different Students’ Understandings of Primitive and Object Variables” in SIGCSE’08, March 12–15, 2008, Portland, Oregon, USA describes different ways of understanding primitive and object variables associated with the corresponding misunderstandings.  From the abstract: “The results show that learners create various kinds of mental models of programming concepts, and that the concept of variable, which is fundamental to most types of programming, is understood in various non-viable ways.”  The author cites two ideas from education theories: First, “constructivist” theory holds that student form and modify mental models, and  “Phenomenography” described by Sorva as an “approach to research that investigates phenomena and people’s relationships to those phenomena”.  Further:

In a research project of this kind, interviews are used as a data collection method. Data collection is followed by or intertwines with qualitative data analysis. During analysis, the researcher, in dialogue with the data, delimits the phenomenon of interest. Different ways of understanding or experiencing the phenomenon are enumerated as an outcome space consisting of a (smallish) number of categories of description. Outcome spaces often take the form of a hierarchy or tree of categories related to each other. The intention in phenomenographic research is not to point out which specific kinds of understanding each individual has, but to identify different ways in which a phenomenon can be understood, or experienced, on a collective level.

And, in contrast to other research (which excludes incorrect understandings from the “outcome space” used by the experimenter to classify response.) he cites, “both correct understandings (as deemed by the researcher) and partially incorrect understandings are included in the outcome space. Partially incorrect understandings are understandings that extend correct understandings in incorrect ways. ”

Cognitive conflict, variable and reference assignment, approach combining constructive and visualization supported teaching.

“Using Cognitive Conflict and Visualisation to Improve Mental Models Held by Novice Programmers” by Linxiao Ma, John Ferguson, Marc Roper, Isla Ross and Murray Wood in SIGCSE’08, March 12–15, 2008, Portland, Oregon, USA.

More recent publication: “Investigating and Improving the Models of Programming Concepts Held by Novice Programmers.” L. Ma, J. Ferguson, M. Roper, and M. Wood. Computer Science Education. 21 (1). March 2011. pp. 57-80 http://www.tandfonline.com/doi/pdf/10.1080/08993408.2011.554722

The Two Humps and a test alleged to predict programming ability from consistency of ones assumptions.

Dehnadi, S., and Bornat, R. 2006. The camel has two humps.
Middlesex University Working Paper.
http://www.cs.mdx.ac.uk/research/PhDArea/saeed

This research was said to attract some attention a few years ago.  It was a major citation in the Ma et. al.  paper.  However, the authors unsuccessfully attempted to reproduce the main results and reported this in http://www.crpit.com/confpapers/CRPITV78Bornat.pdf Another such failure was reported in http://www.daimi.au.dk/~mec/publications/conference/23–iticse2007.pdf and http://www.cs.toronto.edu/~sme/papers/2008/Lung-ICSE2008.pdf

Research about the tight connectedness among the critical concepts in programming

I am extremely impressed by the recent paper by Anthony Robbins: “Learning edge momentum: A new account of outcomes in CS1” He proposes that the bimodal grade distributions in beginning programming courses is the result (in my words) of the central limit theorem failing to apply to such grades because those grades are sums on non-independent random variables. He calls this the “momentum effect.” The paper surveys and criticizes the many proposed reasons for the bimodal phenomenon. Robbins’ formulates and simulates a probabilistic model for concepts learned sequentially and where the effective learning of each depends on effective learning of the previous.  I conjecture that the effect of dependence among the scores does not require the this sequentiality and more flexible models of dependencies may be theoretically interesting.

Some critical responses:  Lister’s column in Sept. 2010 Inroads http://portal.acm.org/citation.cfm?id=1835428.1835434 I do what Lister criticizes by giving partial exam credit on programming problems for each statement or operation the student writes that should appear in a correct solution.  I do this because if I did not do it, the scores would be extremely bimodal. I wonder if bi-modality is not apparent simply because the exams do not test the full measure of what giving a correct solution to a programming problem means! Ultimately, I agree with Lister in that better validated assessments in programming courses are needed if hypotheses like those of Robbins are to be scientifically tested.

Here is another:  http://66.31.107.147/~heines/academic/papers/2011sigcse/CD/docs/p631.pdf  is a paper by Petersen, Craig and Zingaro in the 2011 SIGCSE. The point seems to be summarized by their saying: “In Robins’ model, a misunderstanding of conditionals may result in a decreased probability of understanding loops. Instead, we argue that her misunderstanding of conditionals decreases the probability that she can demonstrate understanding of loops.”  In my view, understanding of loops necessarily includes the ability to demonstrate that whatever is coded in the loop body or in the continuation condition is repeatedly executed.

My blog page on archival journal in computing education.

Advertisements
Post a comment or leave a trackback: Trackback URL.

Leave a Reply

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

WordPress.com Logo

You are commenting using your WordPress.com 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 )

Google+ photo

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

Connecting to %s

%d bloggers like this: