Constructivistic learning claims that "all learning involves the interpretation of phenomena, situations, and events, including classroom instruction, through the perspective of the learner's existing knowledge" (Smith et al, 1993). As such, with the prior knowledge students bring into the classroom, learning involves confrontation and replacement of misconceptions that students have. (Otherwise, there is no need for them for any formal training.) But how do students recognize these misconceptions, and how can they correct these misconceptions given that misconceptions are hard to change? Traditional strategies include lectures, assignments, exams, etc. Well constructed clicker questions can be particularly effective in exposing misconceptions. We can also learn a lot from video games. Good video games (Gee, 2005) can expose players' misconceptions of the game by slowly guiding the players to gain proficiency in the game play, whether it may be motor skills required to use the controls, or mental skills to solve the problems, or awareness of hidden story lines, etc. Rewards have been used effectively to grab the player's attention. How we can turn our classroom experience into a well constructed video game remains a mystery and challenge for all instructors!
According to Smith, diSessa and Roschelle, instruction is supposed to replace misconceptions by confronting the students with their misconceptions. Instead of replacement, perhaps learners are integrating what they know and trying to resolve the conflicts they encounter when new information is presented. There may be knowledge replacement but I suspect it is more integration or resolution of these conflicts, than replacement that is going on.
McCartney et al's paper shows some of the misconceptions on how CS students determine algorithm efficiency. Given two algorithms, the students were asked which one is more efficient to solve a certain problem. The goal is to see whether they consider how the algorithms behave in the worst case - which most experts would do. Although the majority of the students pick the right algorithm, some focus on one part of an algorithm to determine the "worst" case, while others focus on another part of the same algorithm. One of the misconceptions then is that students do not really know what the worst case was. They also do not seem to think tracing through an algorithm on concrete data is important in the analysis.
What are other CS misconceptions? Computer will do what I mean. Command line is not as powerful / efficient as graphic interface. The scenes in a computer game are stored in the program rather than dynamically generated. Playing with / debugging / changing code in the process of writing a program are not expert behaviors. Doing rough work is not cool when solving problems. Web design is programming. Spreadsheet is a database. Design is useless. Testing is not valuable. Any others, there must be a whole lot more ...
Smith, J., diSessa, A., Roschelle, J., (1993), Misconceptions Reconceived: A Constructivist Analysis of Knowledge in Transition, retrieved on September 24, 2009 from http://ctl.sri.com/publications/downloads/MisconceptionsReconceived.pdf.
McCartney et al., (2009), "Commonsense computing (episode 5): Algorithm Efficiency and Balloon Testing", retrieved on September 24, 2009 from http://portal.acm.org/citation.cfm?id=1584322.1584330.
Gee, J. (2005). "Learning by Design: good video games as learning machines." E-Learning, 2(1). pp 5 - 16.