chiodiniSurveyingUpperSecondaryTeachers2025

2025

Surveying Upper-Secondary Teachers on Programming Misconceptions

Proceedings of the 2025 ACM Conference on International Computing Education Research - Volume 1

Background and Context Misconceptions in programming have been studied extensively, but most research focuses on uncovering and assessing misconceptions in students. When teachers are involved, it is usually only to elicit their perspective on misconceptions in their students. However, there is no guarantee that teachers do not hold misconceptions themselves. Detecting the possible presence of misconceptions in teachers is a crucial step for improving their content knowledge and pedagogical content knowledge, which benefits hundreds of students each year.

Authors:
Luca Chiodini
Joey Bevilacqua
Matthias Hauswirth

Study Information
Manually extracted from the paper by the Progmiscon.org team

Programming Languages

Python

Method

Quantitative systematic research

Subjects

97 Swiss high school teachers and their students

Artifact

https://zenodo.org/records/15633868

Related Misconceptions
Referenced by 34 Misconceptions

Misconception
AssignCompares
= compares two values
Misconception
AssignmentCopiesObject
Assignment copies the object
Misconception
ComparisonWithBooleanLiteral
To test whether an expression is true or false, one must compare it to true or to false
Misconception
ConditionalIsSequence
If-else is equivalent to sequence of two ifs
Misconception
DeferredReturn
A return statement in the middle of a method doesn't return immediately
Misconception
IfIsLoop
The body of an if statement executes repeatedly, as long as the condition holds
Misconception
MapToBooleanWithIf
To map a boolean expression to a boolean, an if statement is necessary
Misconception
NoAtomicExpression
Expressions must consist of more than one piece
Misconception
NoReservedWords
Every sequence of letters and digits starting with a letter can be used as an identifier
Misconception
NoShortCircuit
&& and || always evaluate both operands
Misconception
OutsideInMethodNesting
Nested method calls are invoked outside in
Misconception
ParenthesesOnlyIfArgument
() are optional for method calls without arguments
Misconception
ReturnCall
Return statements need () around the return value
Misconception
ReturnUnwindsMultipleFrames
A return statement can unwind multiple call stack frames
Misconception
VariablesHoldExpressions
= stores an expression in a variable
Misconception
AssignCompares
= compares two values
Misconception
AssignmentCopiesObject
Assignment copies the object
Misconception
ComparisonWithBoolLiteral
To test whether an expression is True or False, one must compare it to True or to False
Misconception
ConditionalIsSequence
If-else is equivalent to sequence of two ifs
Misconception
DeferredReturn
A return statement in the middle of a function doesn't return immediately
Misconception
IfIsLoop
The body of an if-statement executes repeatedly, as long as the condition holds
Misconception
MapToBooleanWithIf
To map a boolean expression to a bool, an if statement is necessary
Misconception
MultipleValuesReturn
Functions can return multiple values
Misconception
NoAtomicExpression
Expressions must consist of more than one piece
Misconception
NoReservedWords
Every sequence of letters and digits starting with a letter or an underscore can be used as an identifier
Misconception
NoShortCircuit
and/or always evaluate both operands
Misconception
OutsideInFunctionNesting
Nested function calls are invoked outside in
Misconception
ParenthesesOnlyIfArgument
() are optional for function calls without arguments
Misconception
ReturnUnwindsMultipleFrames
A return statement can unwind multiple call stack frames
Misconception
VariablesHoldExpressions
= stores an expression: it stores a reference to the expression in a variable
Misconception
ReturnCall
Return statements need () around the return value
Misconception
AssignmentCopiesObject
Assignment copies the object
Misconception
NoAtomicExpression
Expressions must consist of more than one piece
Misconception
CompareBooleanToConstant
To test whether an expression evaluates to true or false, one must compare it to a constant

Stay up-to-date

Follow us on  twitter to hear about new misconceptions.