For obvious reasons, this quarter I’m teaching my undergrad distributed systems course, CSE138, to over 100 students remotely instead of in person.

My lecture setup at home.  Note the duct tape holding the document camera in place.
My lecture setup at home. Note the duct tape holding the document camera in place.

As long as I have to teach remotely, I’d like to make the course more widely available, and as long as we’re all stuck inside for some indefinite period of time, I might as well try to make it fun. So, I’m live-streaming the class on Twitch! Starting tomorrow, April 1, I’m going to be live-streaming my distributed systems lectures at every Monday, Wednesday, and Friday at 9:20am Pacific.

This is the second time I’ve taught CSE138, which is based on my colleague Peter Alvaro’s course design. Some of the topics we’ll cover are:

  • Time and asynchrony. No two computers can reason about each other’s perception of time. What does it mean to talk about time when we don’t share a clock?
  • Fault tolerance and replication. Given that computers crash and messages lost, how can we write protocols and algorithms that have adequate redundancy to tolerate failure? Maybe if I think a computer will crash, it’s a good idea to run the same computation on more than one! Maybe if I think messages will be lost, I should send the same message more than once!
  • Consistency and consensus. Is our system storing the right data and providing the right responses? I might have two “replicas” that aren’t actually replicas! If replicas disagree, how do we know which one is right?
  • Parallelism. Why deal with all the pain of distributed systems? Sometimes, if you throw a bunch of computers at a problem, you can do things faster – much faster.

For more detail, you can check out the schedule of topics – it’s tentative, but I’m going to try to keep it up to date as the course goes along.

I see putting lectures on Twitch as a public service for people around the world who are stuck inside right now and might need something to do, and it’s also a convenient way of making the lecture videos available basically immediately. It’s hard to beat Twitch for fast video processing.

My approach will be to hold class using a Zoom meeting for everyone who’s enrolled, while simultaneously having my laptop camera (pointed at me, hopefully) and my external display (which will usually be showing my document camera) on stream via OBS. I plan to spend most lectures writing and drawing on paper.

Students enrolled in my class won’t need to watch on Twitch, although they can if they want to. We already use Slack instead of Zoom chat for in-lecture live chat, and we use Google Forms instead of Zoom polls for in-class surveys, so I don’t think students will miss much if they just watch on Twitch and forgo Zoom entirely. (They will lose the ability to ask a question out loud, but when chat is an option, I don’t expect that most students will want to ask questions via audio anyway.)

I’ve been playing around with OBS, and I’ve been impressed by how powerful and easy to use it is, even for a novice user like me. Protecting student privacy is important to me (and in any case, it’s the law), so I won’t be streaming the Zoom meeting itself; instead, my camera and my external display will be sources in OBS, and OBS and Zoom won’t be aware of each other. Since the stream will only be picking up my own mic and my own cameras, video or audio of students won’t ever appear on stream. I can therefore avoid raising any FERPA-related issues by just not mentioning any student names during lecture. For instance, if Rajeev asks a question in Slack, I have to say something like “A student is asking a good question” before repeating the question, instead of “Rajeev is asking a good question”. (If this were an in-person class with 100 students, I usually wouldn’t be calling students by name in lecture anyway, so this policy shouldn’t be too hard to follow.)

We just had our first lecture yesterday (which wasn’t streamed, and which only covered course logistics rather than any actual course content; course content will start tomorrow), and the class seemed enthusiastic about this Twitch idea. (On Slack, one student decided to conduct an informal poll on whether a Twitch stream was a good idea, and the responses were 24 thumbs up and one squirrel. I’m going to take that as a yes.) So, let’s do this thing!

I have no idea if anyone will actually end up watching on Twitch, but if you do, I’d love to hear from you. I’ll try to keep an eye on Twitch chat, too. I have some fairly draconian chat moderation settings in place, and if there are problems, I’ll make them even more draconian, but anyone who wants to participate in good faith will be welcome.