Emphasize to students that nitty-gritty details are not important for understanding fundamental principles of computer science to motivate students to focus on their big picture understanding.
Meet with students one-on-one to help them develop a Java class in order to clarify basic concepts and increase their confidence with object-oriented programming.
Teach Alice in introductory programming courses as a precursor to object-oriented programming languages, like Java, to make OOP fun and interesting for beginners to learn.
Have students sort specific topics in computer science into broader categories in an activity that uses index cards to give them a big-picture understanding of concepts they are learning.
Have students who are transitioning from Python to Java explore the “From Python to Java” website to show them the differences between the two languages.
Use Python as an introductory language rather than Java or C to allow students to focus on problem-solving more than syntax.
Show students what code looks like with and without switch statements to motivate the reasons for using them.
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.
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.