Making a MOOC: from scipy stack to edX.

Anton Akhmerov

Audience level:


I'll explain the workflow and the technical choices we used in developing a graduate massive online course that relies entirely on everyone's favorite tools. I'll tell about translating from IPython notebooks to the edX open learning XML format, and tell about a poor man's approach to providing a computational environment to a broad range of participants.


The course

I work on topological insulators and superconductors, a rapidly growing topic in condensed matter physics that is under 10 years old. Like all the booming topics, this one attracts a lot of attention from the broader research community, and of course lacks introductory level materials.

Our solution to this was to develop a MOOC, that can also serve as a standalone review of this developing field. As one would expect, this is a relatively small online course with about 3.5 thousand registered participants, 90% of them being graduate students or more senior researchers.

Online education: the problem

A typical online course I encountered consists mostly of multiple videos and web forms for exam problems. This may be partially due to the main editing tool being a somewhat unwieldy web GUI. Also unsurprisingly there is no way to integrate computations into an online course.

Scientific Python

Our strategy was to rely as much as possible on the tools we know and love: git, IPython notebooks, scipy-stack, and Kwant (a Python software package for quantum transport simulations). To be able to do that we decided to implement a converter from a collection of IPython notebooks to an edx course.

This turned out to be a successful strategy. With no prior experience and modest time investment we've implemented the complete course, including interactive static widgets, and giving the participants the possibility to easily examine the details of all the simulations.