Take the time to encourage girls and students of color and tell them that academic abilities can expand and improve, as they often internalize cultural expectations that they have little innate CS ability.
Encourage students by reminding them that they can become great at computer science through hard work, even if they’ve gotten a 1 or a score lower than they’re comfortable with on the AP test, or if they are not currently a star student.
Introduce “base-case” and “smaller-caller” as a helpful way for students to remember the different parts of recursion.
When tracing through code in Java, use different colors for code that is executed in a main method versus in a class method.
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.
Have students write end-of-unit reflections to review material, monitor their learning, and integrate writing into your CS course.
If students are expected to compile portfolios of their work, make sure to begin this process early in the course.
To avoid frustrating students, give them definitions of common terms and ways of fixing common error messages in advance.
Remind students how important creating proposals and design documents is for efficiently writing good code in less time.
Demonstrate swapping variables' values by swapping the contents of two cups full of liquid; you need a third cup to swap the liquids just like you need a third, temporary, variable to swap the values.
DrJava, the Java interpreter, gives students an interactive environment to practice testing strategies in.
Use examples that have nothing to do with computers to introduce new CS concepts in an accessible way.
To integrate CS with other disciplines, have students write algorithms for activities they’re already doing for other classes.
Have some students pretend to be robots while other students program them to complete simple tasks to practice debugging and to emphasize the importance of coding precisely.
When learning in a playful context, students are less likely to be frustrated by difficulty or failure.
Give students, especially younger kids, “movement breaks” so that they don’t have to sit still and stare at a computer for too long.
Create environments for beginning students where the prospect of making a mistake is not intimidating. That way, they’re less likely to get discouraged.
Remind students that it’s better for time management and project outcomes to get code reviewed after each small change is made.
Have a prepared response for questions you don’t know the answer to, that way students don’t perceive their teachers as the only, or an infallible, source of knowledge.