Perform role-play skits to show both positive and negative pair-programming dynamics so that students have memorable and easy to reference examples when providing constructive criticism to other students.
When pair programming in class, set a timer for when students should switch roles of driver and navigator. When the timer goes off, have students stand up, switch chairs, and give each other high fives.
Assign each student in a pair programming partnership to the role of 'driver' or 'navigator' to allow students to start working together without having to negotiate roles.
Replace classroom lecture with co-teaching to keep students accountable during course time and ensure student engagement.
Have students work on their own when first introduced to material then progress to pair programming projects to optimize pair programming outcomes.
Rotate students into different pairs during a single class period so they learn to explain and read code quickly.
Structure homeworks like code reviews to help students iterate on their code and learn the importance of readability.
Incentivize good behavior for Effort, Participation, and Altruism by awarding a small number of points at the end of the course in order (enough points to bump students up a half a grade) to maintain an good classroom environment.
Provide a framework for talking about controversial topics, like ethical dilemmas, to help direct heated discussions remain productive and in-depth.