Build rapport with your class to create a comfortable learning environment. Remind students that overwhelming tasks, like undergoing code reviews, are stressful even for skilled programmers.
When teaching proofs, demonstrate proof techniques extensively before asking students to write their own.
No single method for explanation works completely; rephrase concepts in a variety of ways to make it more likely a lesson will ‘click’.
To help students formalize their knowledge of data structures, act out these abstract ideas as a class.
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.
Avoid formal definitions of topics at first in intro courses; these can be intimidating for students, as they can look like “hard math.”
Use graphs, visualizations, and examples to help make seemingly ‘ill-defined’ topics like Big-O feel more concrete.
Often, intuitive examples trump overly-technical description for introductions to tricky concepts such as Big-O runtime.