Editor’s note: This is a guest post from Professors Scott Rixner and Joe Warren from Rice University. Their class, "An Introduction to Interactive Programing in Python", started yesterday, October 15th.
Yesterday, October 15th, Rice University launched its first open course on Coursera, "An Introduction to Interactive Programing in Python". We are still wondering exactly what we got ourselves into… But, let’s start at the beginning.
Together, we have been teaching at Rice for almost 4 decades, and we are both interested and involved in introductory computer science education. This past June, Rice University decided to join Coursera. We immediately saw the opportunity to both improve our teaching and reach more students at the same time! Neither one of us was smart enough to pass up this opportunity. So, here we are on perhaps what has become the ride of our lives (in terms of teaching).
Joe has been teaching an introductory game course that has been quite successful at Rice and has, in our opinion, the potential to be a unique and exciting course on Coursera. So, after a few short weeks of planning we came up with an aggressive (and by all rational accounts unreasonable) timetable:
- Late June to mid-August - Rework our course material and build tools to support the course,
- Late August to early October – Teach a private version of the course to Rice students,
- Mid-October to early December – Teach an open enrollment version on Coursera.
To have any hope of delivering the class on time, we recruited John Greiner and Stephen Wong to help out. Little did they know what they were getting into… (But hey, we didn’t either.)
Creating the course materials
Our first task was to rework Joe’s course on introductory game programming using C# into an intro programming course in Python with an interactive focus. This change to Python made the course more in-line with other intro courses at Rice as well as other courses on Coursera. One critical roadblock to turn a game-programming course into a MOOC is that we knew of no effective methods for machine-grading interactive programs. So, we turned to peer assessment and concluded that we needed a simple, user-friendly web-based system for building interactive programs in Python.
After exploring the alternatives, we decided that no existing tool was quite what we needed. We had to build our own system that supported a large enough subset of Python that we could build the games we want to build and that can easily use cloud storage to save files. Scott spent his summer building just such a tool, CodeSkulptor. CodeSkulptor is based on the Skulpt project, with a beginner-friendly interface, cloud storage capabilities, and a graphical user interface module, SimpleGUI. One of the key advantages of CodeSkulptor is the ease with which you can share your programs. Click the save button and then send a URL to your friends. They are immediately playing your games without knowing anything about Python, or even programming for that matter. (Imagine the sense of accomplishment when you can show your friends what you have built in class!)
Delivering the private version
By early August, we had a preliminary version of CodeSkulptor ready and draft versions of the course’s mini-projects ready. At this point, we switched into video making mode. For those of you who have never done this before, making video lectures of even a modest quality is a tough, time-consuming skill to learn.
From the technical side, we had to decide on a video recording system (both hardware and software) that fit our needs. We had to learn the basics of cinematography, like lighting, sound and composition. On the pedagogical side, we had to experiment with different styles of video lecturing: a close-up webcam feel, a classroom lecture approach or a TV studio look. We had to think about how we dressed and what kind of screen presence we wanted in these videos.
In late August, we started a Rice-only version of our class. Our Rice students implemented each weekly mini-project and then peer-assessed each other’s mini-projects during class time. For our Rice class, the use of peer-assessment has been extremely positive. The students enjoyed looking over their peers’ implementation of each mini-project and were constantly surprised at the number of different ways one can solve seemingly simple coding problems. Our course will be the first on Coursera to use peer assessment for technical assignments so we hope that Coursera students have a similar experience.
Our tips for creating a MOOC
We’d like to conclude with three pieces of advice for those of you considering making a MOOC:
- Teach a private version of the class at your University first. We made numerous small mistakes (of the normal type) in getting the course off the ground at Rice. We’re incredibly glad that each mistake only inconvenienced a couple of students instead of a couple of thousand students.
- For shooting video, our advice is this: relax, be yourself and don’t be afraid to be funny. Dry, boring lectures are the bane of any student whether delivered live or via video. Funny or lame, we hope that our video lectures are, at least, memorable.
- Finally, consider using peer-assessment in your class (private and open). In our opinion, the key to success here lies in building a detailed rubric for your assignments. While this task may seem daunting, in our experience, being forced to construct such a rubric has improved the quality of our assignments greatly.
You should take this advice with a grain of salt. Our class starts today. Maybe we did it wrong… But, we will say the following, it’s quite a rush when students start posting in the forums by the hundreds and thousands. It’s even better when they tell you “Please keep doing such an awesome job! Thanks :)”
Finally, if you do decide to build a MOOC, we highly recommend listening to this before accepting your mission. Good luck!
-Scott Rixner and Joe Warren, Rice University