The fall term of UBC Computer Science 110 is now completely wrapped up. My Introduction to Systematic Program Design MOOC is based on this UBC course, which is itself based on the Program By Design curriculum. It’s the first time we’ve run the UBC course since completing the MOOC, and a key goal this fall was to incorporate the MOOC materials back into the UBC course, to see how we could use the MOOC to improve the on campus course.
Most of that experiment was fairly straightforward. In the fall term 110 is a 750 person 3 section course taught by Meghan Allen, Ron Garcia and myself. All three of us used a partially flipped model, with students watching roughly 1/2 of the MOOC videos prior to class and 1/2 after class. The videos include in-line comprehension questions, and we followed those up with clicker questions at the start of lecture. We used the pre-class material as a basis for working on in-class problems that then motivated discussion of additional design techniques. We had already been flipping lecture using an early version of the videos, but we were able to do so for much more of the course this time because the MOOC covers the first 3/4 of the UBC course. (Part 2 of the MOOC will cover the rest of the on-campus course.) There were no big surprises increasing the number of flipped lectures.
In parallel with the on-campus course we ran our second offering of the MOOC, and in terms of how a MOOC can improve an on campus course, I think the most interesting thing I saw this fall was the difference between the two different discussion forums. Because the two courses were synchronized, each set of students was discussing roughly the same material at the same time. But the groups of students posting in the forums were almost completely disjoint; while the UBC students had the option of using the MOOC forums, almost none of them did. (Except for a couple of cases where UBC students turned to the Coursera forum to ask for solutions to a graded problem set.)
As the two courses both went on, and I spent hours participating in both forums, I came to believe more and more that the on-campus students would have benefited tremendously if we had somehow combined the discussion forums for the two groups.
To explain why, I first need to share two important bits of context about programming and MOOCs. The first is that programming is an inherently social practice. Programmers must write code that is easy for other programmers to read, because programs that people actually use always require revisions of some sort. So in learning how to program well students have to think about their work within the context of a community of programmers. The second is that MOOC students are, on average, older, more experienced and more professional than on campus students. MOOC students are also, again on average, more enthusiastic than on campus students. The first difference has to do with demographics. The second arises simply because if a MOOC student doesn’t really want to be taking the course they just drop out, so only the really motivated students are left as active participants. The motivation of on-campus students is more varied, for reasons both good and less good.
So why could the on-campus students have learned so much from the MOOC students?
The MOOC students have almost all been involved in more work and team settings than the UBC students. Many of them are actually already working in the software industry and are looking to advance their skills. For these students the idea that code must be readable by others comes naturally–they understand the motivation, they want to learn how to do it. But many of the on-campus students find it difficult to internalize the motivation itself. Ideas like needing to fix a program originally written by someone who long ago left the company, or peer reviews of code are foreign to them. In the MOOC setting, when someone asks why readability is important many other students can chime in with their own stories. In the MOOC setting, when we ask a question comparing the readability of two functionally equivalent programs there are many students who can relate the answer to their own experience and contribute that. In the on-campus course what happens is that the instructors have to tell these stories. I’d like to think we tell them well; but I’m pretty sure that hearing it from other students–people “in the real world”–would be a great value to our on-campus students.
Another area I think on campus students can learn from MOOC students has to do with what constitutes professional discourse on electronic discussion forums. Again, because they tend to be older and have more professional experience, most MOOC students know and follow the proper decorum for using a technical discussion forum. They know they should search before they post. They know they should start a new thread for a new topic. They understand that they should avoid answering “what is the answer to this homework problem” posts. They have learned these and other rules through a combination of watching others do it both right and wrong, and by being chastised on other discussion forums if they do it wrong. Many others have written about these social practices, and I’m not going to go into more detail here. But in an on-campus course, with many first-year students, and where some students are less enthusiastic, we have many problems in the discussion forums that come from students not following these practices. Merging the forums might allow the on-campus students to learn these practices from the larger group of more experienced MOOC students. Again, we as instructors could say these things, but learning from other students probably works better.
A course is a living, breathing entity. Students learn as much from each other as from the lecturer. But that’s difficult to achieve in areas where the on-campus students, as a group, don’t have some of the experiences that supports the learning. For topics like that bringing a large group of more experienced learners part way into the classroom could provide a huge benefit to on-campus students.
We’ll have to try that next time.
Gregor Kiczales is a Professor of Computer Science and Provost’s Fellow for Flexible Learning Strategy.