Misconception: In C-based languages, students don’t know when to use and not use pointer derefrences (*) and reference-operators (&).
Compare variables to gym scoreboards to help students understand them and how they can be used in a game.
Use different kinds of balls (e.g., football, baseball, basketball, small rubber ball) to introduce inheritance hierarchies visually.
Justify the reason that Java Strings are immutable by showing how Strings might be packed together in the heap to help students resolve incomplete understandings in their mental model.
Misconception: Students often think that classes hold Objects rather than understanding that they’re a blueprint for Objects because of the main method.
Misconception: Students incorrectly assume that Java’s substring method is destructive and wrongly anticipate the original string will change.
Misconception: students forget about language-specific or paradigm-specific material (e.g., new/delete or types) when they switch between languages that don’t use the same concepts.
Show code without inheritance before showing code that uses inheritance so that students create a tacit understanding of the benefits inheritance provides.
Introduce a (sometimes silly) back-story for why students need to write particular methods to motivate them and see how their work might be needed in industry jobs.