In this post, James Stix, Service Manager at EDINA, highlights the merits of working with Jupyter notebooks for teaching coding. This post is part of September-October’s Learning and Teaching Enhancement theme: Innovation in Science Teaching.
Data. The familiar term for facts and statistics collected together in some place, for reference or analysis. Over the past two decades, it is safe to say that the proliferation of data, both in its use and its mention, has marked the 21st century as the age of information, or perhaps, more accurately, the age of information management. The modern world is built on the superstructure of servers, hardware and the resulting internet, and runs on the computational agility of software that can serve a plethora of modern needs. Therefore, it stands to reason that teaching future generations how to code would be vital for society’s continued development and economy, almost a given, right?
The reality is that there are a variety of tools available for teaching coding better in education, ranging in complexity, functionality and availability. Such a variety can result in fragmented, hasty adoption of the most relevant tool of the week, month, or year, with an almost immediate underlying sense of urgency to keep up with the times and what is next, whatever that may be.
When looking back to the first few decades of this new world, where working with data increasingly defines the essence of productivity, one can note how online tools for coding, particularly those aimed at younger audiences and novel learners such as Scratch, proved incredibly successful in reaching countless numbers of young people and educators around the world. Tens of millions of kids have created projects with tools such as Scratch. While this is a fantastic step towards providing equitable and accessible avenues for coding and working with data and reaching such large numbers, educators are noting the increasing need to make sure that both core principles in computing and in thinking as a coder, both literally and analytically, are features of the pedagogy of coding.
There is a desire and demand for tools to teach and do programming, which is balanced with a call for tools that are built to acknowledge the need for adaptability to fast-paced change and the trend towards low-code or no-code. These latter tools could replace core programming tools and interfaces, such as an Integrated Development Environment. Still, a user interface, which provides the space where interactions between humans and machines occur, will represent one of the specialised needs for coders who create the backend functionality for low and no-code platforms. More importantly, learning computing at school, university or beyond, should enable students to learn how to think like coders (adopting core practices such as predicting, documenting, debugging, and merging code to projects) as much as being able to demonstrably do the coding.
Enter the world of Jupyter. The Jupyter notebook user interface provides one of the available solutions to teach programming, including the forward-thinking adaptability to integrate with other tools and platforms, such as GitHub, alongside supporting a number of the most popular programming languages in education and industry. Jupyter notebooks can be used to:
- Organise classroom materials and objects;
- Store and provide access to reading materials for students;
- Present and share lecture materials;
- Perform live coding;
- Explore and interact with materials;
- Support self-paced learning;
- Grade students’ homework;
- Solve homework problems;
- Make materials reusable to others.
Platforms such as Noteable, built from requests by academics at The University of Edinburgh, provide a single place to access computational notebooks, expanding on this premise by also including pre-installed libraries, grading of coding activities with Nbgrader, and dedicated support to users.
With a plethora of tools available, the next challenges for platforms such as Jupyter notebooks will be to adapt and create environments for students that engage them in learning and increase participation and interaction. These tools can also offer direct and indirect social benefits, such as their ease of access through a web browser on a device connected to the internet, rather than a manual setup (and associated difficulties when doing this with large groups). Jupyter notebooks are also ‘living’ documents, meaning they can be edited to respond to questions or input from students, and used as a conversation and discussion piece during a lecture or presentation.
Still, the goals of learning are often realised through the measured performance of students. This is most visible by what is assessed during and at the end of instruction and course progress. Using computational notebooks, such as in the Jupyter notebook type, and on platforms built for education such as Noteable, we can create a variety of assessment and performance opportunities for students. Core tools, extensions and features, such as Nbgrader and auto-grading of code cells, offer instructors more opportunities for feedback and practice of course material, as well as more opportunities for students to assess their abilities to perform coding tasks and work with data.
You can find links to guidance and support videos on the NoteableEDINA YouTube channel.
You can watch James’ presentation on this topic on the Learning and Teaching Conference webpage.
James Stix is the Service Manager for the online education platform for coding, Noteable, at EDINA, the Centre for Digital Expertise at The University of Edinburgh. A tech enthusiast with a background in education, international development and innovation, James aims to continue researching, collaborating and leading on digital innovations, such as Noteable, that improve access to coding skills by increasing access to resources and knowledge relevant and useful for the modern world and its future.