Use a visual proof to demonstrate that the better strategy for resizing arrays is doubling the size to make it easier for students to understand.
Often, intuitive examples trump overly-technical description for introductions to tricky concepts such as Big-O runtime.
Use graphs, visualizations, and examples to help make seemingly ‘ill-defined’ topics like Big-O feel more concrete.
To help students formalize their knowledge of data structures, act out these abstract ideas as a class.
Analogize stacks and interrupts using a story in which a person is frequently interrupted in the course of performing everyday tasks.
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.
Use different kinds of balls (e.g., football, baseball, basketball, small rubber ball) to introduce inheritance hierarchies visually.
In anticipation of a relatively large project, assign smaller projects that include the programming concepts necessary for the large project.
Require students to refactor their code while keeping the output of their program exactly the same in order to challenge them to solve problems using a variety of strategies.
Use Car as an example of an interface because students agree on the general behaviors of a car but can only come up with specific instantiations of cars, which provides students with a strong mental model for interface relationships.
Use Clock as an example of an abstract class because ALL clocks have the same mechanism for keeping time, a necessary property for an Abstract Class, to provide students with a strong real-world mental model for abstract classes.
Have students act out diagrams they create of the stack and heap to extend this common drawing exercise and help them strengthen their mental models.
Force students to explore inheritance and the Java APIs for ArrayList by writing code that HAS-A ArrayList or IS-A ArrayList.
Have students write methods that perform tasks of a standard music player in Java to give them practice manipulating data structures in a familiar context.