srush / VirtualTeaching

DIY setup for virtual teaching on ubuntu

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DIY Virtual Teaching

This page documents my Ubuntu setup for virtual teaching in Fall 2020. This setup was designed to be pretty minimalistic. I wanted to spend as much time on course material as possible, and make the virtual classes feel casual and interactive.

I use this setup to teach "Machine Learning Engineering" at Cornell Tech with ~100 students. The course is taught in 3 1-hour sessions: 2 morning / 1 late evening for international student equity.


  • Interactive mode. (Many of my colleagues swear by the flipped classroom setting, but I haven't mastered that yet.)

  • My apartment is ~700 sq feet. My partner uses the main room, so I am in the bedroom. I roughly have a 4 foot x 5 foot space.


I spent roughly $500 on additional equipment for teaching. I am relatively happy with these tools, if I were to spend more it would be on a nicer camera.


At Cornell Tech, we use Zoom for teaching (and everything else). So I needed to stream through that.

On my side, I use OBS to stream my class. It seems to be the best tool and FOSS so that's great.

The OBS tools are super easy to use. I was able to create some windows that let me show my terminal (Konsole), webcam, and browser windows (Firefox). I have a couple of different Scene templates that I switch through during class. Everything was intuitive.

OBS Setup / Issues

  • In order to use OBS with zoom, I followed the setup instructions here:

  • An alternative approach that works just as well is to create Preview window in OBS and then to share screen that window during class.

  • The XComposite screen share in OBS is quite buggy in Ubuntu. I had to switch from the default desktop to Gnome and use Firefox to get it to work.

  • The default streaming setup was quite low quality. I had to go to Setting->Output to turn it up to something reasonable.

  • In order to use the green screen, you need to add a Chroma filter on the camera output. This works well if you have enough light. The ring light helps with this for my night classes.

Additional Class Software

  • Slido - used to answer questions and comments during class

  • Canvas Quizzes - used to give in class quizzes (mostly for attendance sake)

  • GitHub Classroom - for grading and distribution

  • IPython / Notebooks - useful for in-class code demonstrations and question answering

  • Witeboard - used if I need to draw diagrams on my ipad for technical explanations

  • Affinity Designer - ipad app used to draw class diagrams


I decided to try out less technical slides this semester to avoid any resolution issues with streaming. My slides are written using revealjs through the sphinx plugin. There is an example in the slides directory.

  cd slides
  pip install -r requirements.txt
  sphinx-autobuild -b revealjs source/ build/

This will launch the slides at http://localhost:8000/example.html#/

ezoic increase your site revenue


DIY setup for virtual teaching on ubuntu