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.”
Encourage students to develop solutions in their natural language before considering syntax to improve their general problem solving abilities.
Direct students struggling with loops to write on paper what should happen, then have them determine the start, end, and update values.
Encourage students to write the inside of the loop before the loop syntax to help students recognize the conditions necessary for iteration.
Explain through metaphor that return values allow a primary function to get information from a secondary function.
Use a diagram with variable-value pairs for each call of a recursive function to help students see the change of control flow as calls are made and completed.
Be careful to introduce code that students are equipped to understand; otherwise, students may not be able to demonstrate their comprehension.
Prioritize straightforward, understandable code over unclear, shortcut-filled code to avoid confusion.