Identifying and Correcting Programming Language Behavior MisconceptionsKuang-Chen LuShriram Krishnamurthi
Kuang-Chen Lu
Shriram Krishnamurthi
2024
Proc. ACM Program. Lang., Volume 8, Issue OOPSLA1
Misconceptions about core linguistic concepts like mutable
variables, mutable compound data, and their interaction with scope
and higher-order functions seem to be widespread.
But
how do we detect
them, given that experts have blind spots and may not realize the
myriad ways in which students can misunderstand programs?
Furthermore, once identified, what can we do to correct them?
In this paper, we present a curated list of misconceptions, and an
instrument to detect them. These are distilled from student work
over several years and match and extend prior research. We also
present an automated, self-guided tutoring system. The tutor builds
on strategies in the education literature and is explicitly designed
around identifying and correcting misconceptions.
We have tested the tutor in multiple settings.
Our data consistently show that (a) the misconceptions we tackle are
widespread, and (b) the tutor appears to improve understanding.
Study InformationManually extracted from the paper by the Progmiscon.org team
Programming Languages
SMoL
Method
Quantitative systematic research
Subjects
Students from 2 universities and other users of online textbook
Artifact
https://dl.acm.org/do/10.1145/3580432/full/Related Study ResultsPhenomena studied in this paper that map to Progmiscon.org misconceptions
The following list summarizes those phenomena reported in this study that provide evidence for misconceptions documented on Progmiscon.org. (The paper may provide evidence for other misconceptions as well. This list focuses exclusively on misconceptions documented on Progmiscon.org.)
Programming Language Behavior MisconceptionsMisconceptions about program semantics identified by SMoL Tutor
CallByRef
Function calls alias variables
Learners hold misconception
This provides evidence potentially relevant for the following Progmiscon.org misconceptions:
CallsCopyStructs
Function calls copy data structures
Learners hold misconception
This provides evidence potentially relevant for the following Progmiscon.org misconceptions:
DefByRef
Variable definitions alias variables
Learners hold misconception
This provides evidence potentially relevant for the following Progmiscon.org misconceptions:
DefsCopyStructs
Variable definitions copy structures recursively
Learners hold misconception
This provides evidence potentially relevant for the following Progmiscon.org misconceptions:
StructByRef
Data structures might refer to variables by their references
Learners hold misconception
This provides evidence potentially relevant for the following Progmiscon.org misconceptions:
StructsCopyStructs
Storing data structures into data structures makes copies
Learners hold misconception
This provides evidence potentially relevant for the following Progmiscon.org misconceptions:
Lazy
Expressions are only evaluated when their values are needed
Learners hold misconception
This provides evidence potentially relevant for the following Progmiscon.org misconceptions: