Skip to main content

Computing Misconceptions - Any Key Stage

Downloaded: 920

Last edit: 05 November 2021

Third Other, Digital solutions
Fourth Programming, Other
Subject Knowledge Hardware and Processing, Programming and Development, Data and Data Representation
Imported Resource Type For Teachers, For Hubs, Meta-resource

This resource grew out of this thread about misconceptions our learners have.

This is just a first attempt at trying to categorise the misconceptions we see in our classrooms. Please join in and edit as you wish.

Start with a common mistake but then try to describe the underlying misconception. e.g. pupils always include an else branch when creating selection statements is the mistake. The misconception would be novices think a decision always involves having to choose one action from a set of possible actions.

We may be able to spot some common root causes, which would be amazing.


  • writing code for statements like ‘x is equal to 3 or 4’ literally as ‘x == 3 or 4’ which causes headaches if using a language where the expression to the right of the Boolean operator has a Boolean interpretation.
  • Value and variable are often swapped too eg 7 = x.
  • the perennial problem of confusing assignment (=) with a test for equality (==). x=x+1 is utterly confusing in the mathematical terms children are familiar with.
  • foo="A"
    //gives foo="B" and bar="B"
  • Slicing a string removes characters from the original string.
  • Lists and arrays are the same thing.
  • Variables remain linked after assignment. a := 7; b := a; a := 13; What’s the value of b? Students with this misconception would answer 13. (This might be worse in languages that use an equals sign for assignment. After all, b = a seems to suggest these semantics…)
  • Inverted assignment (first = second) - wrong way round


  • thinking the inverse of x < y is x > y.
  • Loops, functions, variables, classes don’t really exist. CPUs have no clue about any of these things, they exist only in the language translator and debuging.

Flow Control


  • ‘sequence’ in Maths meaning a pattern and ‘sequence’ in Computing meaning an order
  • Every line in Java / C / C# / C++ must have a semi colon at the end of it.
  • if x == y: (execute then part even if false)


  • ELSE in selection needs a Boolean test of its own
  • ELSE is always needed in a selection statement
  • 1=="1" is True (not helped by the fact in some languages it is!)
  • IF(A > 6 AND < 8) instead of IF(A > 6 AND A < 8)
  • Language dependent IF (A = B) is the same as IF (A == B)
  • Students insist on using: If test=True Then, rather than: If test Then


  • where the student thinks that the loop break when ever the condition stops being true, rather than at the boundary where it is checked.
  • loops always exit from the bottom of the loop instead of where the loop control condition is evaluated.


  • Confusing a function call with a GOTO (this is terrible because it often kind of works with a few weird side effects)
  • Returning False from function even though condition does not hold
  • All subprograms must have a return statement
  • not storing return value of function
  • mixing up the direction in which data flows between subprograms that ask for user input or carry out some output. Data from the user should go out from the subprogram to the rest of the program not in. Data to the user should go in to the subprogram not out of it.
  • Lots of my students (despite careful teaching to the contrary...) confuse a function returning a value with a procedure that outputs (i.e. prints) a value.

Data Representation

  • The length of a string is the number of chars in it, but string indexing is zero based. The length of CAT is 3, but the T is at index 2. (Some languages have settable origin 0 or 1)
  • Assuming that all two’s complement numbers are going to be negative.
  • assuming all hexadecimal numbers MUST have letters


  • That the best way to type a capital letter is the Caps Lock key :/
  • Clock speed More cycles per second doesn’t automatically mean faster. Some CPUs do more in each clock cycle, or memory may not be able to keep up.
  • USB == Memory Stick
  • Input devices being something you put into the computer (i.e. anything that you can plug in, especially power).


  • pupils learn about a logical star network topology and assume this is how it is physically configured (i.e. a server sits in the middle and all nodes are directly connected to it).
  • Peer-to-peer networks are believed to be a network topology, rather than a virtual network implemented at software layers
  • WiFi connects you directly to the Internet...
  • ...and this connection is available anywhere you go.
  • The class of an IP address dictates the subnet mask that must be used.
  • servers are big computers
  • Absolute misunderstanding of what Wifi is altogether, using it as a general term for their router at home.


  • The title tag in HTML produces a title on the webpage itself.
  • The HTML head element describes what appears at the top of a webpage.
  • Conflating the Internet and World Wide Web.
  • Confusing Web browser and search engine. Google being a browser
  • Referring to HTML as a programming language/writing a program.


  • SUM in a spreadsheet means 'add' (as in maths) not 'do a calculation' [also =SUM(A1+A2) is a pet hate!]
  • =SUM() being needed for any calculation in Excel.

Computer Systems

  • Processor cores execute multiple instructions at the same time (multitasking).
  • Having more processor cores directly improves the runtime of a (single threaded) application
  • Logic gates are discrete components not made of anything else (no knowledge of transistors)


  • Compilers produce assembly code which is then converted to machine code.
  • Detecting errors is the same as correcting errors.

Further Reading

Sirkiä, T., & Sorva, J. (2012). Exploring programming misconceptions: an analysis of student mistakes in visual program simulation exercises. In Proceedings of the 12th Koli Calling International Conference on Computing Education Research (pp. 19-28). ACM. Available here

Edit history