As a child of the '80s, my schoolboy memories are infused with learning how to program on tiny, limited computers such as the Sinclair ZX Spectrum, Commodore 64, and BBC Micro. I even had a pocket-size PC-6 from Tandy with a single-line display. Limited they may have been, but learning how to program those machines gave us the keys to the world.
When I was 9, I was a member of an after-school computer club—one where lecture notes were distributed on distinctive-smelling spirit-duplicated paper (because we couldn't afford a real printer!) and where we wrote our own programs in BASIC and stored on tape or, for the lucky few, 5.25 inch floppy disks. We learned about loops, boolean logic, functions, and arrays—the building blocks of basic computer science. More importantly, however, we learned that programming is more than an end in itself—it gives you the ability to explore and reason about the world in ways that non-programmers will never have. If you can code it, you understand it.
Anyone who knows about the history of computers knows that even the cheapest modern laptop is thousands of times more powerful than anything I had access to back in the '80s. It's even possible to buy a modern, functional computer for the price of a fancy coffee. Less well known, however, is that lecture notes have been upgraded too.
The free and open source Jupyter notebook is a way of combining richly formatted text, mathematics, and interactive elements with executable computer code—all from within the familiar environment of the web browser. Some people think that it will change how children of the future learn about science. Things have moved on somewhat from the spirit duplicator of my youth.
Lecturers and researchers at my university, The University of Sheffield, have enthusiastically adopted the Jupyter notebook and its surrounding ecosystem. A crucial part of this ecosystem is SageMathCloud, a cloud-based platform that extends the notebook idea even further. SageMathCloud allows you to run Jupyter notebooks without having to install any specialized software and also allows multiple people to edit the same notebook at once—giving something that looks like Google Docs for the notebook.
As part of Sheffield's new Research Software Engineering function, I've been working to help lecturers in fields such as biomedical sciences, physics, mathematics, and computer science get to grips with the Jupyter notebook and SageMathCloud. One of the outputs of this work was a set of tutorials for educators on how to use SageMathCloud to create and manage a course based on the notebook. It also includes a tour of features and a set of tips and tricks. Collaboratively developed on GitHub, this material will improve and evolve over time.
Initial feedback from the courses we've delivered using this technology stack has been fantastic. My favorite quote comes from a student of a bioinformatics course developed by Dr. Marta Milo and me, where we taught the basics of programming, bioinformatics, and cloud computing in six weeks: "The hardest thing ever, stressful, frustrating, but very rewarding." To my ears, they are the words of someone who's just learned a new way of thinking about their subject.