After returning a test or exam, speak with your class about how they feel, and what they can do based on their scores.
Tell students that a lower grade can be better than a higher one when you are developing better learning and study habits.
To improve introductory courses, interview students a few years after they take the course to discover which skills they retain.
When teaching introductory courses, teach students to use “top-down thinking” and “bottom-up implementation.”
Often, intuitive examples trump overly-technical description for introductions to tricky concepts such as Big-O runtime.
Use graphs, visualizations, and examples to help make seemingly ‘ill-defined’ topics like Big-O feel more concrete.
Avoid formal definitions of topics at first in intro courses; these can be intimidating for students, as they can look like “hard math.”
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.
Invite guest speakers to introduce students to the varied professions and people in computer science, especially to encourage girls to see themselves taking up STEM careers.
To help students formalize their knowledge of data structures, act out these abstract ideas as a class.
No single method for explanation works completely; rephrase concepts in a variety of ways to make it more likely a lesson will ‘click’.
When teaching proofs, demonstrate proof techniques extensively before asking students to write their own.
Give students opportunities and resources (people, books & the web) for asking and answering their own questions.
Setup hackathons for your students so they can see what they’ve learned and practice unguided programming in teams.
Emphasize that it is not necessary to add the reference operator, &, in C++ when passing an argument to a function that takes in a reference.