ProgMiscon
A Curated Inventory of Programming Language Misconceptions
Programming language misconception: A statement that can be disproved by reasoning entirely based on the syntax and/or semantics of a programming language.
Explore Misconceptions By Programming Language...
Explore Misconceptions By...
Read the ProgMiscon Research Paper...
Turn Misconceptions into Learning Opportunities
Misconceptions are Valuable!
The "misconceptions" documented in this inventory often are conceptions students constructed in thoughtful and ingenious ways. A misconception in one programming language may well be an existing or possibly future language feature in another language. We believe misconceptions are valuable, and we point out their value so you can build on them.
Rooted in Teaching Practice
This is a curated inventory of misconceptions students have while learning to program. This collection is based on observations in programming classrooms over the course of more than a decade.
Resource For Teachers
If you teach programming, this site is for you. You can easily find and navigate the misconceptions your students might have, discover possible causes, and learn about possible teaching interventions.
Navigate by concept, or if your course uses a textbook we cross-referenced, find which misconceptions your students may exhibit in the various chapters of your book.
Growing Inventory
The site currently contains only a small fraction of the misconceptions we collected. We will continuously add more. We have a lot of material, and we are gathering more in our research into Conceptual Change when Learning to Program.
Programming Languages
We initially focused on Java, then added Python, included JavaScript, and most recently expanded the collection to Scratch.
To ensure that our collection rests on a solid foundation, we explicitly connect each misconception to the relevant sections of the authoritative language specifications. This also allows you to look up misconceptions for specific language features.