Thursday, December 5, 2013

I Flipped a Class, and I Liked It

TL;DR: In my course this time around, I recorded all lectures as screencasts and used class time only for hands-on examples. I loved it. Others have said this all already, but I am so happy with the way my course turned out that I want to share.

MOOCs, Flipping, and Blending

Online courses, flipped classrooms, and blended learning all typically involve video recordings and other online resources. This post isn’t about trying to reach large numbers of students, which is what online courses are often about, especially the “massive” ones known as MOOCs. Instead, this post is about teaching a usual class to a typical number of students. My approach might be categorized most accurately as blended learning, but I’ve latched onto flipped classroom, because it’s reasonably accurate and I think it better captures my shift in mindset.

My Class

CS 5510 Programming Languages at the University of Utah is a traditional, interpreter-based course on programming languages. Students use a variant of Racket to implement interpreters and type checkers, with the idea that implementing programming-language constructs leads to a solid understanding of the constructs in languages present and future. Enrollment is around 40 students.

For a textbook, I use Shriram Krishnamuthi’s Programming Languages: Application and Interpretationin this case, the second edition, although conceptually I follow a path closer to the first edition. My course content is even closer to Friedman and Wand’s Essentials of Programming Languages, since that’s how I learned and how I started teaching, but I use notation more in line with Shriram’s books. In short, I teach completely traditional and standard material, but like many teachers, I am only weakly attached to a specific textbook.

Students receive a homework assignment most weeks. The assignment is usually of the form “take this interpreter and add feature X.” I expect an average student to spend 10 hours per week on the assignments. Students submit assignments by clicking a “Handin” button in the programming environment, which sends their work to a server that accepts only programs that run without error and have full syntactic test coverage. The server also runs additional tests and reports back the first failure, if any, to the student while accepting the submission. Students can resubmit any number of times. I grade all assignments myself.

Classroom Mechanics, The Old Way

I create many slides for my classes.1 In the classroom, I used to lecture with slides and interactive programming for 80 minutes twice a week, except for the time used by homework presentations.

For each homework assignment, two or three students show their solutions to the rest of the class. Each student is required to present at least once during the semester. A presented solution need not be complete, and I encourage students to present incomplete solutions so that we can discuss the problems as class—particularly since each presentation occurs before the assignment’s due date. (Other students could conceivably submit exactly the solution that they see in class, in cases when the presentation solution was complete; they don’t seem to do that, probably because students realize that they won’t learn anything that way.) These presentations take 20-30 minutes of lecture time per week.

Classroom Mechanics, The New Way

The slide- and programming-based presentations that used to fill my lecture are now recorded as screencasts. That is, I step through slides and write programs on my laptop, meanwhile recording my screen and voice (though a USB headset). I use QuickTime Player to record, I lightly edit the recording in iMovie, and I upload the screencasts to YouTube.

You can see the slides, videos, textbook references, assignments, and more on the course schedule page.2

Each of my lectures turns into 20 to 40 minutes of video, which is broken into segments that typically run 3 to 8 minutes. The recorded material becomes condensed relative to a live variant for some obvious reasons:

  • There is no interaction with students: no questions, no requests to repeat material, and no diversions. Of course, students have the option of replaying parts of a video, but the other features of a live presentation are precluded.

  • Stumbles, mistakes, and poor presentation get edited away.

  • The videos include slightly fewer examples than I would do in the classroom, because I still do some of those in the classroom.

Despite those obvious factors, I must say that I don’t really see how 75 minutes of lecture routinely turn into 20-40 minutes of video. I don’t stumble that often in a live presentation; most examples that I previously covered are in my slides; and my students have never provoked especially many diversions. Somehow, it’s much easier to present a streamlined, clear explanation when I’m in my office recording small chunks of video, and that makes it more condensed.

I expect students to watch the videos before class. I do not attempt to summarize the material from the videos at the beginning of class; for practical purposes, I assume that everyone has just watched all videos, everything is fresh in mind, and the students are ready to work through additional details or explore whatever random direction feels right to me at that moment. Of course, not all students watch the videos in advance, much less immediately before class, but pretending that they do was a crucial ingredient for me.

As before, we devote time each week to presentation of homework solutions. These presentations take a little more time than before, closer to 30-40 minutes per week, since there’s less pressure to move on to lecture material.

Otherwise, working additional examples usually means modifying an interpreter and/or type checker. Sometimes, I sit at the keyboard myself, but I prefer to ask a student to take over, at which point I sit down in the front row. Students are not expected to solve exercises on their own, but instead solicit help from the rest of the class. In other words, it’s the 30-person version of pair programming. Usually, after 5-10 minutes, a different student takes over. I draft students for the front in a predictable pattern and reassure them as needed that the rest of the class is there to help.

When a student is in the front of the class, I frequently interrupt to make suggestions, along with the rest of the students. Unlike the students, I’ll frequently comment on an implementation choice or extemporize on related topics—but not too much. Our results are posted on the course web site after class.

When I sit at the keyboard myself, it’s usually because I want to move faster than students through an example. I end up working that way about a quarter of the time, and it sometimes feels like a failure—the idea is to get students doing things in the classroom—but I give myself some leeway.

Is this a “Flipped” Classroom?

The lectures-as-videos part of my class certainly fits the definition of flipped classroom. I believe that flipped classroom is also supposed to mean that students complete “homework” in the classroom, where the teacher provides one-on-one help to students as needed. Since I expect students to spend about 10 hours per week on homework, and since we meet in class for less than three hours, I cannot follow that prescription strictly.

The course remains traditional in that the class progresses together through the material. It’s a “watch and re-watch the videos at your own pace” arrangement, but not a “work at your own pace” arrangement.

I would say, nevertheless, that I’ve “flipped” the classroom in a sense that works in a university course. When the class meets, we are focused as a class on one speaker or task, and sometimes that speaker is me. But everything that I used to expect students to get out of the lecture (other than homework presentations) I now expect them to get outside of class, and that both allows and forces me to present more hands-on examples in class. If I thought of the arrangement as merely a “blending” of the traditional classroom with video technology, then I would be tempted to provide new material in the class meeting, and I think that would not work as well.

Videos vs. Books?

Although recorded videos are the most obvious feature of my new course, I’m not sure that asking students to watch videos is different from expecting students to read a book. The key, in my mind, is to assume that students really do get the course material outside of the classroom, and not spend time in class reviewing it.

I have seen and taught courses where each lecture was accompanied by required reading. I have not previously seen or taught a course where class ran as if the content of the required reading had just been presented; instead, the material is usually repeated or summarized in some way. That recap usually ends up taking a lot of time.

Even with a great textbook, I have trouble envisioning a course where I don’t give my own presentation of the material in something like slide form. I’m not sure why I feel that way. It’s possible that screencasting my videos just helps me get past personal biases to arrive at the core improvement: not to lecture in the classroom.

How My Work has Changed

Naturally, recording videos became the main work for teaching my class. I hope to reuse the videos in future offerings of the course, just as I have always recycled slides, but it’s certainly more work up front.3 I spent at least two days per week preparing, recording, and editing lectures. Attending class and grading assignments are about the only other tasks, and those tasks together take only a few hours per week.

The recording work is manageable by being almost the only thing that changed in my preparation. The slide content is mostly the same as before. (I’m revising all of the slides and rearranging some of the course, but that’s necessary every few years, anyway.) Creating an online course, in contrast, sounds difficult and scary. Simply recording my lectures in advance is relatively straightforward, and it requires only the equipment and technology that’s on my laptop already.

For class meetings, I must come up with new examples, in addition to all the examples that were already in my slides. You can get a sense of those examples from the “In Class” column on the course schedule page, which is where I post whatever the students and I write during class. The examples are somewhat repetitive, but I am routinely surprised by how revealing they feel when we work through them in class. In short, coming up with useful examples turned out to be easy for this class.

What I Got Right

I believe that the revised CS 5510 is, by far, the best course I have taught in my career. Compared to previous offerings of the course, I’m covering more material and in more depth, the students are completing more of the homework assignments (80% full-credit completion versus 60%), and many more students than usual aced the second midterm exam (1/3 of the class!). Most of those effects could be explained by having better students than previous years—and my sense is that students in my class have been either smarter or better prepared in recent years. Still, I’m convinced that I am teaching better.

As you would expect, I recorded lectures that I normally wouldn’t attempt, because the material is too difficult or my presentation isn’t good enough to reach most students. It felt worthwhile to record a few brief lectures for ambitious students.

In any class, it can be tricky to schedule lectures and homework so that they proceed together and fit a calendar. Recording lectures simplifies the problem. Sometimes I record more material than would fit in a lecture, and sometimes I have less, and it’s all fine.

In one case, I gave a homework assignment where it turned out that my lecture didn’t cover the material well enough to make the homework reasonable. That happens. In past courses, I would postpone the due date, use time in class to repair my mistake, and figure out how to get back on schedule for future homework assignments. This time, I simply posted three extra videos, and the problem was solved.

Some advice/opinions:

  • Create videos as small chunks. The benefit of keeping videos under 10 minutes is widely reported, and I was glad to have that hint.

  • Resist the temptation to summarize the videos in class. Otherwise, soon you’ll be reaching for your slides, and then you’ll fall back into the old pattern of trying to stuff ideas into student’s heads, instead of trying to listen and react.

  • Have students show their homework solutions in class, whether you have them show work before or after the due date.

  • Make up examples for class at the last minute. Think back on those times that you’re giving a lecture, you decide to try a little example, it turns out to be more complicated than you expected, and it all feels like a distraction... In a flipped classroom, that unexpectedly complex example is pure gold.

  • Hand the chalk, keyboard, or whatever to a student. Even if the going gets rough, and even if you or the class have to tell a student each character to type, it works better than doing it yourself.

Go For It!

If this post has any purpose beyond allowing me to express my joy in teaching this semester, it’s that someone like-minded may take the plunge and start recording lectures to video, instead of delivering them in class. Go for it. It’s an investment, but it’s worth it. Even if disaster strikes and I don’t get to use the videos a second (or third or fourth) time, I’ll be happy that I did it.


1 Since I create a lot of slides, I’ve built a system for creating my slides more easily. Slideshow and my course slides have grown up together over a decade.
2 If you are unfamiliar with the content or notation, the slides may look like an endless stream of code, but that’s how this style of course goes when people in my community teach it, and we think it works. I didn’t originate or change that facet of the course.
3 I’ve spent much of the last 18 years building a programming language, so massive up-front investment is perhaps my default mode of operation.