Building a Virtual Classroom with Zoom

CS50 is Harvard University’s introduction to the intellectual enterprises of computer science and the art of programming, a course that can be taken both on campus and off. The course is unusual, perhaps, for its “production value,” which is part of its pedagogy, so that students watching videos asynchronously online feel no less a part of the classroom than students on campus. With all students now off campus, though, and all classes online, the course has aspired to optimize students’ synchronous experiences via Zoom as well. In this post, a look at the hardware and software with which we have experimented on campus for students afar, including links so that others might adopt a solution like ours in whole or in part.

Back in 2015, Harvard Business School launched HBX Live, “a virtual classroom designed to reproduce the intimacy and synchronous interaction of HBS’s famed case method in a digital environment…. With HBX Live, no matter where participants are located, they can log in concurrently and join real-time, case-based sessions with Harvard Business School faculty who teach from the HBX Live Studio, located in the Boston-based facility of public broadcaster WGBH…. In the custom-designed studio, a high-resolution video wall mimics the amphitheater-style seating of an HBS classroom, with up to 60 participants displayed on individual screens simultaneously,” per the below, with enough room for an instructor to roam and interact with each of the screens (and cameras above them).

Professor Youngme Moon teaching in the HBX Live Studio.

With so many of our own courses online via Harvard Extension School as well as edX, we immediately wanted to recreate that sort of classroom in Cambridge so that we, too, could not only capture the feel of live lectures for on-campus instructors and off-campus students but also preserve the interactivity thereof. (We were already using Zoom for TA-led sections, smaller-scale classes for Extension students that followed lectures each week.) Unfortunately, larger-than-life video walls are rather expensive (not to mention quite big!), and each panel required its own dedicated PC, with signals routed from each to a production booth nearby. That booth, in turn, was staffed by multiple people. The net effect seemed amazing, but the classroom’s complexity and cost were high.

And so our vision for virtual lectures simmered for some time, with CS50’s own lectures in Sanders Theatre remaining largely asynchronous for students online, with most watching recordings thereof afterward. Students could watch live via Facebook or YouTube, though neither platform allowed students to ask or answer questions in real time, except via chat. Not quite the same as being, or feeling like, an actual attendee.

But in 2018, some colleagues and I began to teach cohorts of students in the Harvard Business Analytics Program, a “cross-disciplinary curriculum to help students not just analyze data but understand it, translate it, and incorporate it into strategy at the top levels of their organizations.” With only one HBX Live Studio on (well, technically off) campus at that point, the program opted to use Zoom for synchronous classes, with 30–60 students in attendance at each (more than the typical 20 in TA-led sections).

We were reluctant, though, to teach those classes from a laptop or desktop alone, with that many students confined to (25 or 49) tiny tiles on our screen. And we preferred not to teach while seated at desks. I, for one, find that I exude more energy while standing, ideally inspiring (if not perspiring) all the more too.

Version 1

And so we aspired to approximate, with Zoom, the feel of a virtual classroom. Within a small conference room, we installed a rectangular table, at one end of which would be me and a laptop (and an optional iPad), at the other end of which would be a (now discontinued) 65" Samsung TV, atop which would be a Sony α7S camera behind a (now discontinued) Listec teleprompter, per the below.

Instructor’s view of our first Zoom-based classroom.

Behind me would be a green screen (so that we could superimpose me against slides or code using an Ultimatte 12, without overwhelming students’ screens with Zoom’s own screen-sharing feature), lit from above with LED lights, with some additional hardware off to the side to allow a (single) colleague to help control all of it, per the below.

Bird’s-eye view of our first Zoom-based classroom.

On the TV would be most of our students, still in tile form but larger than they’d be on a laptop or desktop. And on the teleprompter would be the tile of any student asking or answering a question so that my eye line would meet theirs (because of the camera behind the teleprompter itself), creating the feel of a one-on-one interaction. Indeed, among my own misgivings with video conferencing in general is just how often we all seem to be looking at each other’s forehead, chin, or beyond, by nature of webcams’ positions, a constant reminder of technology standing between us. Both the TV and teleprompter, meanwhile, would be controlled via Zoom running on a colleague’s laptop off to the side, with my own laptop controlling whatever would be behind me via the green screen or shared via Zoom.

For the technically curious, a wiring diagram of everything, below.

Wiring diagram for our first Zoom-based classroom.

Overall, this first version worked great. Each of our 90-minute classes felt more like an actual class than would have, say, me alone at my desk. And, because of the teleprompter and the camera’s distance from me, eye contact with students was better than usual. The result was more energy and intimacy than a simpler setup might have allowed.

Even so, I could see no more than 49 students at once, with any additional students off-screen (unless we manually paged back and forth via Zoom). And much as I preferred to be standing, my legs wanted to move, just as I would to interact with that many students in an actual classroom. Indeed, fixed to the end of the table as I was, I found myself channeling energy elsewhere, as by tapping my foot and frequently leaning on the table itself. Admittedly odd symptoms, but seems the energy had to go somewhere!

Version 2

When COVID-19 struck, we, at first, began teaching from home. And even once Harvard had established protocols for being on campus, we could no longer safely use our conference-room setup, with two people together (e.g., me and a colleague) in such a small room. We could have relocated some of the hardware to an adjacent room, running wires between each, so as to isolate everyone. But we decided instead to solve more problems at once.

We first relocated to another room altogether, one with sufficient airflow and filtration so that I could teach unmasked, with any colleagues isolated in separate rooms. We then introduced two additional TVs so that I could see more students at once across a total of three, roughly arranged in a semicircle, allowing me a few feet to roam, with a small table in front for my laptop. Below the TVs were two smaller displays: a confidence monitor on which I could see myself, just to ensure I wasn’t walking out of frame, and a (now discontinued) vertical monitor on which I could see Zoom’s Participants window full-screened, to see at a glance whose hands might be up. Behind me was a white backdrop, lit from above by LED lights, with a pair of speakers on the floor from which to hear students’ voices behind me (with my back between them and my lavalier mic, preventing a feedback loop). Atop the middle TV was that same Sony camera, toward which I would look whenever interacting with a particular student, who’d be pinned by a colleague on that screen.

The end result was that each virtual class began to feel, and was, all the more like an actual class.

An artist’s renditions of all of this, below.

Bird’s-eye view of our second Zoom-based classroom.
Instructor’s view of our second Zoom-based classroom.


Not everything worked so well at first, though. We originally experimented with having a camera atop each of the TVs so that we could pin participants on any of the three, thereby varying my glance and stance whenever students asked or answered questions. Because the backdrop was entirely white, though, switching among cameras (at similar focal lengths) yielded awkward jump cuts, with my own position seemingly jumping in space. So we eventually simplified with just one.

Connected to each TV initially, too, was an Intel NUC Mini PC running Zoom, one per TV, with all three PCs remotely controlled by a colleague via Chrome Remote Desktop using a ultrawide monitor, with each TV mirrored on one third of the monitor. That particular design quickly proved suboptimal, as students would sometimes appear in duplicate across the TVs, since none of the PCs knew which students the others were showing. And it was unwieldy to control manually (and remotely!) so many PCs at once, so as to pin participants as needed.

Thanks to our friends in Harvard Business School’s MBA program, though, we then discovered Zoom Rooms, an alternative to the Zoom Client with which most of us are familiar, typically used in conference rooms with multiple, wall-mounted screens. Not only does Zoom Rooms coordinate as many as three screens at once using a single PC, its UI can be controlled via Controller software on an iPad (or other tablet). Without disturbing what’s on any of the TVs (as by moving a mouse, clicking buttons, or opening menus), potentially distracting an instructor, a colleague behind the scenes can “pin” to a particular screen whomever an instructor has called on, as in the below. And the participant can be pinned predictably to a particular screen (e.g., that with the camera atop it), on which the instructor can then focus to meet the student’s eye line.

Recording of a colleague pinning a student on an instructor’s center screen using Zoom’s controller software on an iPad. The ultrawide monitor allows the colleague to see, on one monitor, what the instructor is seeing across three TVs, using remote-desktop software.
Screenshots of Zoom’s controller software, closer up.


A live demonstration, below, of all those improvements.

Version 3

We have since iterated on the design further, angling the TVs outward more so as to open up more room to walk. (Tape on the floor reminds me just how far I can roam.) And we have replaced the white backdrop with a (wider) green screen, thereby allowing us to superimpose me again atop code or slides, as in the below. We deliberately keep some of the LED lights above and below in frame so as to orient students in an otherwise virtual space.

Teaching in front of a green screen (left), with the background keyed to black (right) so that slides (with black backgrounds) blend into it seamlessly.

We also reintroduced two additional cameras, again totaling three, this time at different focal lengths so that we could capture, from different angles, physical demonstrations like the below. While we could digitize demonstrations like these, I’ll admit I prefer the physicality and simplicity of real-world objects. Drawing with a marker on a whiteboard (and erasing with my hand!) is still faster than any touchscreen I’ve used.

Teaching in front of a green screen (left) with sheets of paper taped to a physical whiteboard in the foreground (along with me not liking the number 5 during binary search), with the background keyed to black (right).

We have also added Zoom’s Chat window to the vertical monitor, so that we can not only see whose hand is raised but also who’s asked or answered a question via chat. We find it helpful to use high contrast mode in Windows so that names, hands, and messages stand out at a glance.

An artist’s rendition of this latest setup, below.

Artist’s rendition of our latest Zoom-based classroom.

And for the technically curious, a wiring diagram this setup, below.


With all that said, the setup is indeed just an approximation of an actual classroom, with some downsides still. Whereas the Zoom Client supports as many as 49 tiles per screen (totaling 147 across three), Zoom Rooms initially supported only 25 (totaling 75). Not a deal-breaker at the time, since that many students were unlikely to participate on camera in a particular class, but a regression nonetheless that has since been redressed, with 49 (totaling 147) now possible.

Zoom’s chat, too, is primitive, with discussions unthreaded and pop-ups often distracting. And breakout groups are all too isolating, with the process of changing rooms (or, as an instructor, keeping an eye on them all) clunky. And the larger a class is, the more time-consuming it is for a colleague to find and pin a particular student when called upon.

All quite fixable (we hope!) in software. Indeed, we’re hoping we ourselves might be able to leverage Zoom SDKs or Zoom Apps next to solve some of those problems ourselves.


Special thanks to CS50’s own Ian Sexton, Tara Kavanaugh, Andrew Markham, Rongxin Liu, and Arturo Real, who figured all of this out! And to Harvard Division of Continuing Education, Harvard University Information Technology, and Harvard Business School for so much support and inspiration. And to so many students who opted into these demos!

Harvard University’s introduction to the intellectual enterprises of computer science and the art of programming.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store