- Use peer instruction.
- Organize and require pair programming.
- Use backward design.
- Change the classroom climate.
- Be explicit in your expectations that every student can learn CS.
These are all great, and I’ll use them in my training courses, but I really want to add a zero’th: organize and campaign for structural change. We can fix our own classes, but if we want to improve things across the board, we need to change the system. We can’t get decent pay and job security for teaching assistants on our own. We have to work together to get more funding for education, to make training in modern educational practices mandatory for all faculty, and to fend off those who think that universities should be run like Walmart or Amazon. We have to organize and campaign because we can’t achieve big things working alone, and because relying on altruism, heroism, and stealth will eventually exhaust us.
As a software engineer, I believe in the power of automating repetitive tasks. As someone who wants shorter lines at office hours for everyone, every time, I believe in collective action. I think this kind of training would be a start; I’d welcome your thoughts.