Lorena Barba interviewed at O'Reilly JupyterCon 2017
How I got started using Jupyter for teaching: I met Fernando Perez at a workshop, where he gave a talk about IPython notebooks, and immediately I knew I wanted to use this in my classes. I have used them in my classes ever since. First, in my Computational Fluid Dynamics (CFD Python) at Boston University. Then, in my new Aerodynamics class at the George Washington University: this class traditionally is taught purely on pen-and-paper, but I decided to change the approach and teach it computationally (AeroPython).
With my research students, we are using Jupyter everyday: for internal reports, for organizing ideas and results to prepare for publication, and constructing narratives before writing a paper. We have other software, of course, that runs outside notebooks, to produce simulations on our workstations with GPUs or the university cluster and recently on public clouds. But the results need to be post-processed, and we use Jupyter notebooks for that, looking to make that process reproducible. We want to eliminate GUI-based post-processing and instead do that programmatically, so it is reproducible.
In my JupyterCon keynote, I discussed how reproducibility is a process of relationship-building between the researchers, and though tools can help, it is up to the researchers to anticipate a conversation that you will have, virtually, with others who might want to build from your work, and make a commitment to do the work in a form that will enable the other researchers to comprehend it, inspect it, come to trust it, and build from it. We can have tools that facilitate reproducible research, but we cannot relinquish the responsibility as the humans in this process, to work reproducibly. You can’t give the tools and machines that responsibility.
I also have a big interest in open education, not only creating open educational resources, but building the communities, and sharing experiences, etc. I created a MOOC in 2014 in numerical methods for engineers (NumericalMOOC), and it was self-hosted on our Open edX site. The course is still live and people continue to follow it—more than 8,000 people enrolled in it. Open edX is a learning management system and a platform for delivering MOOCs. We write our materials on Jupyter and share them on GitHub. To integrate this effort with online course creation, we are building tools to convert the material from Jupyter to content in an Open edX course, and to use nbgrader within Open edX as an external grader for assignments written in Jupyter.
Some best-practice parameters for designing a course with these types of delivery methods. One of these is the idea of modularization: a course should be built like a lego construction of smaller learning units that are stackable. A course in a university might last a semester, but we don’t have to follow that as unit, but we can make a course built of four or five units that can be mixed-and-matched. Each module can be a set of Jupyter notebooks, the “lesson” unit, that should not be too long and can finish with a nice sense of accomplishment for the learner.
We led a BOF at JupyterCon with Robert Talbert focusing on teaching with Jupyter. Educators using Jupyter want to connect, share ideas, collect best practices, share stories of things that can go wrong and recipes for fixing those. Many concerns came up several times at the BOF, and we can share our solutions, but these will be changing. What doesn’t change is that educators need to connect and empower each other.