Give students guided notes (i.e., partially-completed notes that students complete) to help them stay engaged and learn from lectures or readings. It may be especially helpful to include vocabulary lists.
In anticipation of a relatively large project, assign smaller projects that include the programming concepts necessary for the large project.
Have students think through the steps of a racquetball simulation to help them create problem solving strategies.
Explain that using objects/classes helps students keep their programs organized to motivate the use of object oriented programming, some students need extra help understanding its importance.
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.
Have students compete calculating to the 50th Fibonacci number, one team of humans doing the math versus a team students writing a program to stress the importance of computing for calculations.
Use Shapes, Rectangles, and Squares to teach objects and inheritance in Java, tell students they’re the only ones who can complete the job for extra engagement.