Teaching Programming?

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 but are currently expanding the collection to Python and JavaScript.

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.