ProgMiscon

A Curated Inventory of Programming Language Misconceptions

265
Misconceptions
59
Concepts
4
Languages

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...

Read the ProgMiscon Research Paper...

Luca Chiodini, Igor Moreno Santos, Andrea Gallidabino, Anya Tafliovich, André L. Santos, Matthias Hauswirth. A Curated Inventory of Programming Language Misconceptions. Proceedings of the 2021 ACM Conference on Innovation and Technology in Computer Science Education (ITiCSE '21), June 26-July 1, 2021, Virtual Event, Germany. 10.1145/3430665.3456343

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.

Stay up-to-date

Follow us on  twitter to hear about new misconceptions.