Have students pair program to increase their interactions with one another, promote retention of female students, and maximize resources.
Survey students about their experience in your classroom to identify practices they find encouraging.
Explicitly state ground rules for classroom and lab behavior to ensure all students feel comfortable and to discourage certain students from dominating discourse.
Create a group of student mentors who have already completed your school’s introductory computer science courses to give current students peer role models.
Provide consistent feedback opportunities from the very first day of the course to assist struggling students early on and prevent them from falling behind.
Use Python as an introductory language rather than Java or C to allow students to focus on problem-solving more than syntax.
Spend extra time teaching Big O in intro classes that use Python because the underlying implementation of Python lists is a mystery to students that leads students to believe many operations are constant, O(1), that are not.
Draw attention to types when teaching students Python to help lay the groundwork for understanding types in lower-level programming languages they’ll learn about later.
Focus on these four key concepts when first teaching C to help students with previous programing experiences transition from higher-level languages such as Python.
Focus on simple examples in a breadth course about systems to avoid confusing students. Save depth for upper level courses.