When you write a function, like (foo x), students don’t realize you can put a variable with a name OTHER than x in there, or an actual number.
When tracing through code in Java, use different colors for code that is executed in a main method versus in a class method.
Introduce “base-case” and “smaller-caller” as a helpful way for students to remember the different parts of recursion.
Have students work in small groups to solve logic puzzles so they develop algorithmic thinking and good problem-solving habits.
Explain recursion with the example of determining your row in a stadium by asking the row in front of your what row it is… asking until you get to the first row, the base case.
When teaching introductory courses, teach students to use “top-down thinking” and “bottom-up implementation.”
Ensure that your courses have clear expectations about prerequisite knowledge so all students are well-equipped for class material.