Programming Misconceptions for School Students

In this post I describe our ICER’18 paper on programming misconceptions for school students.

We see nowadays how kids are learning programming in Scratch and many other programming languages such as Javascript, Python and Alice. It remains both interesting and valid to investigate areas related to how children acquire programming knowledge and develop their computational-thinking skills. Most of our knowledge as researchers and educators are focused on university-level students studying programming for the first time, who are different to children in many ways including their cognitive development levels. One of the areas of interest in this regard is “programming misconceptions” for school-age children.  

Programming misconceptions and why do we need to study them

A misconception in general is having an incorrect understanding of a certain concept that usually comes from a previous erroneous belief or incomplete knowledge.

We know about misconceptions from earlier research in other topics such as Math, Geography, and Science. But programming misconceptions for children is still something researchers want to grasp fully. We don’t know, for example, whether children hold similar misconception to adult students, and how the children develop these misconceptions. This sort of information is very valuable to teachers as it allows them to develop countermeasures to misconceptions in their materials and day-to-day teaching, and as a result make programming less difficult for the very young children. According to Craig Barton, a math school teacher, one of the greatest challenges facing a teacher is “to identify, understand and resolve the misconceptions our students hold”.            

The experiment

  • Where: We had the opportunity to study children programming misconceptions at Nemo, the science museum in Amsterdam. Children there participate in research studies as part of their visit to the science museum. A brilliant idea! 
  • Who: We asked children older than 7 years, who knew programming before to answer a computerized programming test in Dutch or English. After two weeks at Nemo we collected the answers of 145 children between 7 and 17 years.
  • What: We asked the children multiple-programming questions where they have to predict what happens in a small programming problem. The programming problems are taken from previous research on programming misconceptions which was designed for older students with another programming language (Java). We designed the questions in our case in Scratch, one of the most popular programming languages for children.

Results

After analyzing the answers we got from the participants, here are the most frequent misconceptions among the children in our study:

1. The difficulty to understand the sequential nature code execution

The question (to the right) is a simple arithmetic operation in which the values are changed AFTER the operation itself is executed. The majority of the children focused on the mathematical part and rushed to add the values and generate the total. Other children assumed that the computer should automatically modify the total when the values change saying that “when you change values of these variables total value changes also”, while another child said “the computer should calculate this for you”.

2. The difficulty to understand that a variable holds only one value at a time

Children who chose the misconception answer, to the question to the right, give more importance to both values of the variable, reflecting what the code does literally. Thus we see answers that X should contain the two values or 30 (a summation of 10 and 20). One child gave an indication to a complete and correct understanding even though he chose the misconception answer eventually, saying that “I’m not sure, but if two [instances] of the same variable are used with different numbers, if possible, [the result] will give both numbers. Otherwise it would be 20 because that was the last change”. Impressive!

3. The difficulty to understand that user-input breaks program execution

Children had many thoughts answering this question (to the right). The most frequent reasoning behind the wrong answers was that they should respect the order of the blocks and somehow did not care about the ask block. A child for example wrote “this is the order from up to bottom” and another one wrote: “because [the answer] is in the correct order”. Other children thought the computer should act and answer the question for them because they cannot answer it themselves in the test, or because they thought the question was directed towards the computer not them. One child wrote that “Gobo says I am .. years old and directly says Nice! [continues the next blocks]”, and another child wrote: “I think that in the game Gobo is asked how old he is”.

Other factors in holding misconceptions

There are many factors that could lead to holding a misconception. In our experiment we looked at two of them: the age of the children and what programming languages they knew before. Unsurprisingly, we found that older children tend to answer the questions correctly, while no relationship is found with the holding of a misconception. When it comes to knowing other programming languages, data suggest that children who knew another programming language in addition to Scratch have a higher chance of answering the questions correctly compared to children who indicated knowing Scratch only. The latter had higher rates in choosing wrong answers.

Read the full paper Here.

See the full questionnaire we used Here.

Leave a Reply

Your email address will not be published. Required fields are marked *