Students often get stuck because they start working on a problem without thinking about what they need to know and do in order to get a working solution.
Do not have students write code for common algorithms. Instead, incorporate common algorithms into your class in novel course-specific variants
Compare a program to a military dictatorship to emphasize that correctly-formed computer program instructions are followed literally and without question.
In assignments, make sure to include examples of or references to code that is essential for a program, but that students are not responsible for writing.
Use a simple IDE to avoid distracting from the actual material; using a complex IDE/programming environment can be overwhelming to students.
Use analogies to real-life things or events in order to provide students with a more concrete picture of abstract concepts.
When presenting abstract concepts, have students close their eyes and visualize the concepts as they are described. Then, have them draw what they saw.
Highlight key differences between math, CS, and engineering to give students context for why CS is a distinct field in itself. Let students know that you don’t necessarily have to excel in one field to excel in the others.
Encourage students to step away from buggy code and think about the big picture as a part of the debugging process.