TL;DR: Starting today, March 30, 2021, I’m live-streaming my undergraduate distributed systems course on Twitch every Tuesday and Thursday for the next ten weeks, starting at 3:20pm Pacific!

A year ago, covid-19 had taken hold in the US, and I was teaching my undergrad distributed systems course, CSE138, remotely for the first time. I decided that as long as I had to teach the course remotely, I might as well try to make it widely available. Live-streaming my lectures on Twitch sounded like a lot of fun, so I did! I posted all the resulting videos on YouTube, where they ended up being quite popular, especially right before the midterm and final exams.

My YouTube analytics for the last 365 days. I'm sure those two spikes were just a coincidence.
My YouTube analytics for the last 365 days. I'm sure those two spikes were just a coincidence.

My experience with teaching on Twitch last spring

I found teaching on Twitch to be a lot of fun. Because my course happened to be scheduled for 9:20-10:25am Paciic time on Mondays, Wednesdays, and Fridays, the timing was more or less convenient for much of the globe, and so I had folks tuning in from around the world. Using Twitch also benefited the students actually enrolled in the class, because lecture videos were instantly available instead of only becoming available after a long processing and upload delay. And I never had any problems with bad behavior in the chat, perhaps because of my rather draconian chat moderation settings.

I was genuinely very excited when, after a few weeks, my Twitch channel had enough followers and viewers that I was eligible for Twitch “Affiliate” status. Basically, this meant that people could pay me to subscribe to my channel if they wanted to support me. I had no intention of making any money off of streaming (which was good, because almost no one subscribed), but it still felt good to meet those minimum-followers-and-viewers qualifications.

My lectures are extremely lo-fi. I point a document camera at a piece of paper and write on it with a marker, and I point my webcam at my face and talk. That’s it. Some of my colleagues have gotten amazingly good at video editing during the pandemic, but I haven’t developed any of those skills, because honestly, I don’t do any editing. I just lecture live and post the unedited video, and it seems to be good enough most of the time!

Although streaming my course went well last spring, I decided not to do it again in fall 2020 because the graduate distributed systems course I taught then had more of a discussion-based format and was ill-suited for streaming. And this winter I wasn’t teaching at all, so my stream stayed dark. But now it’s spring again, and I’m teaching undergraduate distributed systems again.

Should I stream my course? There are good reasons both for and against. In the “for” column:

  • It’s still by far the fastest and easiest way I know to make videos available.
  • There’s some stuff I don’t love about last year’s recordings, and a do-over would be nice. And presumably I’ll be teaching in person again pretty soon, so I might not get the chance again for a while.
  • It might be good publicity for our lab.

In the “against” column:

  • This wil be my first time teaching a course that meets Tuesday/Thursday instead of Monday/Wednesday/Friday. The Tuesday/Thursday class periods are 95 minutes long, as opposed to 65 minutes for a Monday/Wednesday/Friday course, and 95 minutes is a long time to be asking people to pay attention, especially for an online course. When I’m already not sure I’ll be able to teach as effectively, why make it even harder on myself by also throwing Twitch into the mix?
  • Last spring, the time the course met was, by total coincidence, pretty good for most of the globe, but this time it’s 3:20-4:55pm PT, which is terrible for, for example, India.
  • The content really won’t be that different from last time, except now it will be in 95-minute instead of 65-minute chunks, and 95-minute chunks seem worse.

There’s not anything I can do about the 3:20pm start time, but I’ve spent some time thinking about how to split the course content up into 95-minute chunks, and I’m hopeful that it will work out okay. Maybe 95-minute lectures don’t have to be worse. So I’m gonna go for it!

You’re teaching what now?

The field of distributed systems studies the design, implementation, and behavior of systems that involve independent components that communicate by passing messages to one another over a network. In addition to the usual challenges of concurrency, distributed systems may be characterized by unbounded latency between components and independent failure of components, making them challenging to reason about and debug. Distributed algorithms have to be written in a defensive style (that seems paranoid and overwrought to the uninitiated) to be able to work under these circumstances. It’s a fascinating field, and I love teaching it.

This is a course geared to undergraduate students with some systems programming experience, but no distributed systems background as such. Some of the foundational concepts we’ll be covering are:

  • Time and asynchrony. No two computers can reason about each others’ 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.

If that sounds like fun to you, please join me on Twitch! If you can’t tune in live, I’ll be posting the videos on my YouTube channel sooner or later as well, and you can find the schedule of topics on our course website.