Use Python as an introductory language rather than Java or C to allow students to focus on problem-solving more than syntax.
Ask students "do you know in advance how many times you'll need to go through the loop?" when deciding between using a for or a while loop, because this is a good rule of thumb for them to use.
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.
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.
Spend extra time covering these three topics students have a really hard time with in Java: references and primitives, inheritance, and nested loops.
Draw arrows with memory address numbers written over them from Java objects to their corresponding memory address to help students connect memory models to the actual hardware process.