Not only are Jupyter notebooks a great tool for developers and data scientists, they are also perfect for teaching.
Now we can go over each point in detail.
Jupyter notebook essentially eliminate all the complexity of getting started with any type of high level coding. This is especially appealing for beginners because students can just drop into Jupyter, create a notebook and start writing and running code! This is almost infinitely better compared to the traditional way in which students would have to worry about the details of using a terminal, setting up an environment, installing libraries etc etc. Most importantly, this allows students to focus on the core aspects they need to learn: logic and syntax and allows the instructors to focus on teaching.
One of the great things about the notebook interface is that it allows the user to write and run code in any order and at a rapid pace. Let’s face it, very few of us (if any) actually write a good amount of code in one shot that is completely free of bugs or logical errors. This is why we write a small amount of code, test it, and then continue to add complexity while testing each addition. The notebook interface is amazing for this process because it facilitates instant testing without the need to run a whole script again. Turns out, this is also great for learning because it allows students to receive rapid feedback thereby greatly improving the speed at which they learn.
Since the cells in notebooks can also be used to write Markdown or to write code that renders LaTeX or HTML content, instructors can prepare notebooks that place support content such as simple explanation text, links to external resources, mathematical equations, images and (even!) videos right next to cells where the student has to write and run code. This can help streamline the instruction delivery process in situations where the instructor is not physically present with the student to help out.
This one is perhaps only important for instructors and course staff but useful nevertheless. Tools developed by the community such as nbgrader make it possible to create assignment notebooks in which instructors can embed tests (visible to students) which validate whether the code students write and submit is correct or not. You might think that these tests should not be visible to students but students actually appreciate the fact that they are able to validate whether their solutions are correct or not prior to submitting their assignments. Using nbgrader, instructors can also write hidden tests which the students never see. This prevents assignment submissions which are just hard-coded to pass all tests. To learn more about how these assignment notebooks can be created, check out this post.
A potential drawback of coding environments for education is that they are designed only for teaching and cannot actually be used for work. As a result, students can spend hours getting familiar with an environment that they will never use. However, given how rapidly Jupyter’s popularity is growing in industry, notebooks are something students can expect to use when they have to use the skills they learn at a company.