Have students make a multiplication table to practice working with 2D arrays, nested loops, and abstraction using a data construct they’re already familiar with.
Get students paying attention to types in Python; although type declarations aren’t explicitly required in Python, they still exist and are crucial to understanding how Python manages data.
Use 7-day 4-doses-a-day pill-organizers to introduce students to 2D arrays because these create an interactive, 7-by-4 two-dimensional array that helps students visualize this abstract concept.
Force students to explore inheritance and the Java APIs for ArrayList by writing code that HAS-A ArrayList or IS-A ArrayList.
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.
Explain that Strings in Java are a weird-hybrid between a primitive and an Object and as a result they can’t be modified.
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.
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.