Help students build intuition about recursion in Python by comparing each recursive call to a function call, which may be more intuitive for students in introductory classes.
Misconception: when working with Booleans, students assume that false means incorrect and true means correct.
Create pain points for material you want to introduce that motivate the need for abstraction and programming language features so that students realize the need for concepts before you introduce them.
Ask your students what they need to know about dice to have enough information about the three aspects of a class to create dice objects building off a common game tool to help students get comfortable with making objects.
Teach Processing first and then transition students to Java so they have a transition to a professional level programming language in a relatively seamless manner.
Ask questions about what parts of a program change to help students identify times when a variable is needed.
To build intuition about searching and sorting algorithms, have students engage in a kinesthetic activity where they unwittingly reproduce or create binary search and sorting algorithms.
Spend extra time covering these three topics students have a really hard time with in Java: references and primitives, inheritance, and nested loops.