bevilacquaAssessingUnderstandingExpressions2024
2024
Proceedings of the 24th Koli Calling International Conference on Computing Education Research
Background and Context. Notional machines are widespread in computing education. While they often are used to explain programming concepts, prior work on visual program simulation demonstrated their use for assessment. This paper presents a qualitative study of the use of a notional machine identified in prior literature—“expression as tree”—as an instrument to assess the understanding of expressions.
Authors:Joey Bevilacqua
Luca Chiodini
Igor Moreno Santos
Matthias Hauswirth
Study InformationManually extracted from the paper by the Progmiscon.org team
Programming Languages
Java
Method
Qualitative and quantitative systematic research
Subjects
542 hand-drawn expression trees from 12 exams in 6 university courses
Artifact
https://zenodo.org/records/13898595Related MisconceptionsReferenced by 30 Misconceptions
ArithmeticPlusPrecedes
Addition has higher precedence than string concatenationArrayAllocationWithoutNew
Arrays are created without the new keywordArrayAllocationWithoutNew
Arrays are created without the new keywordArrayHasLengthMethod
To get the length of an array, one needs to call its length methodCallRequiresVariable
One needs a variable to invoke a methodCallRequiresVariable
One needs a variable to invoke a methodConstructorWithoutNew
One can write the constructor name, without new, to instantiate a classConstructorWithoutNew
One can write the constructor name, without new, to instantiate a classElseAlwaysExecutes
The else branch of an if-else statement always executesInlineCallInExpressionTree
The expression tree of an expression involving a call inlines the call's computation of the returned valueInlineVariableInExpressionTree
The expression tree of an expression involving a variable inlines the variable's definitionLiteralString
When passing a literal string as argument to a method, no quotes are neededLiteralNoExpression
A literal is not an expressionLiteralNoExpression
A literal is not an expressionNoAtomicExpression
Expressions must consist of more than one pieceNoAtomicExpression
Expressions must consist of more than one pieceNoAtomicExpression
Expressions must consist of more than one pieceNoAtomicExpression
Expressions must consist of more than one pieceNoAtomicExpression
Expressions must consist of more than one pieceNoAtomicExpression
Expressions must consist of more than one pieceNoAtomicExpression
Expressions must consist of more than one pieceNoAtomicExpression
Expressions must consist of more than one pieceObjectsMustBeNamed
A variable is needed to instantiate an objectObjectsMustBeNamed
A variable is needed to instantiate an objectParenthesesOnlyIfArgument
() are optional for method calls without argumentsRightToLeftChaining
Chained accesses are invoked from right to leftSingleQuoteString
String literals can be in single quotesTargetTyping
The type of a numerical expression depends on the type expected by the surrounding contextThisChildInCallExpression
Instance method or constructor call nodes in expression trees have a child labeled "this"VariablesHoldExpressions
= stores an expression in a variable