Teaching Online

I think that our grandchildren will probably regard the distinction we make between what we call the real world and what they think of as simply the world as the quaintest and most incomprehensible thing about us.

— William Gibson

My last post promised one about teaching online, so here goes:

  1. It’s not about in-person vs. online: it’s about active teaching vs. passive teaching. Active teaching occurs when the instructor modifies lesson content, pace, and delivery based on real-time feedback from learners. Videos and scripted slides recited word for word are passive; live coding and formative assessment are active (provided the instructor actually changes tack when appropriate), and active is more effective.

  2. Have learners share their work in real time. Create and share a Google Doc at the start of each lesson and have learners post answers there. If there are more than about a dozen learners, create one document for each group of 5-10. Copy and paste the question so that they can refer to it, and a list of their names to avoid cursor collisions.

  3. Create a backlog. If you don’t know how to answer a question, or if it would take you too far afield, add it to the backlog at the bottom of the shared document and come back to it later. This gives you a chance to do some research and/or prioritize responses while the learners are busy with exercises.

  4. Chat, then talk. Mute everyone by default, then have them ask questions or request the microphone in the video conference’s text chat. Be strict about respecting speaking order so that the conversation isn’t dominated by those who speak out fastest. Keep track of how many times each learner has spoken (either because you called on them or because they volunteered) and try to make sure that nobody speaks more than twice as often as the quietest person in the class. This may mean messaging someone privately to ask them to give other people space or publicly asking for an answer or opinion from someone who’s been quiet.

  5. Use images. One big advantage of Google Docs over older technologies like Etherpad is that learners can paste images directly into the former. If they have a webcam or a cell phone, they can create simple pencil-and-paper drawings and upload them to share with the entire class. (I expect that enough learners will have touch-screen devices in two years’ time that the upload step will become unnecessary.)

  6. Share screens in both direction. Have learners share their screen so that others can see how they’re doing things as well as what they’ve done. It’s faster and more reliable than plugging their laptop into a projector, and they will quickly become more efficient tool users once they can pick up tricks from each other in passing.

  7. Use peer instruction. With practice, one instructor can give meaningful feedback to about a dozen learners by giving feedback on three or four selected responses to each question. If the class is larger, create breakout rooms with 2-4 people each and have learners discuss answers with each other in order to clear up one another’s misconceptions. A metric ton of research has proven that this is pedagogically effective, and it also helps keep learners engaged.

  8. Use calibrated peer review. Another way to scale is to have learners add comments to each other’s answers, which is much more effective and reliable when they’ve been taught what to look for. You can prepare them for this by giving them three or four short pieces of work to grade against a rubric, and then scoring their assessment based on how closely it matches your own. They will quickly learn how to read and critique work reasonably consistently, at which point they can start giving each other useful feedback.

  9. Set a timer for each exercise. It’s easy to get bored and cut short the time for an exercise when your learners are working and you’re not, so if you’ve told them they have five minutes, set a timer on your phone to keep yourself honest. I prefer not to make this visible to them so that they don’t feel like they’re trying to beat the clock.

  10. Take regular breaks. Set another timer so that you give them 5-10 minutes every hour. Their backs and bladders will thank you, and they’ll be much more focused if they’re not distracted by either.

Two important notes:

  1. No matter what kind of class you’re teaching, you should have, publicize, and enforce a code of conduct.

  2. Everything in the list above (including the first note) works just as well in a co-located class as it does in a distributed class. For example, having learners join a video call when they’re in the classroom with you makes it easy for them to show you and their peers how they’re doing things (and exactly what error messages they’re getting).

The future of teaching is already here; it’s just not evenly distributed. More and more, I believe that our focus should be on getting people to adopt the good practices we already know about rather than searching for new truths (or silver bullets) that will lie unused on library shelves. If half of the people teaching programming ten years from now are using half of what we know today about better teaching, we’ll deserve to be proud of our accomplishment.

In the wake of posts about Shopify's support for white nationalists and DataCamp's attempts to cover up sexual harassment
I have had to disable comments on this blog. Please email me if you'd like to get in touch.