Pluto for education
Pluto.jl is a programming environment designed specifically for education! If you are planning to teach a scientific course, Pluto might be a good fit for you and your students. Pluto only works with Julia,
Students and teachers are our primary target audience, and we are committed to We believe that there are enough ‘advanced’ tools for advanced users, but that a lot can be done to make programming more accessible to beginners.
How can you use Pluto for education?
Here’s our evil plan to take over the world:
- We make programming and exploration easy – this makes it great for writing lectures notes. You can experiment with your idea, and when you’re done, you organize the code and add some text.
- Then we add interactivity in a very accessible way (easy, but not as flexible as some other tools) – and you can write awesome lectures with sliders, buttons and animation!
- When it’s the students’ turn to write code, we make Pluto as easy as possible to set up and use, with a coding experience that is designed specifically for users that are new to programming and Julia.
Let’s look in more detail at writing lectures and assignments in Pluto.
For lectures
Pluto is great for writing lectures in the “Pluto style”. This means lectures with:
- A modern look – lectures with simple markdown and plots should look great, with modern typography and design, on desktops, mobile phones and PDF.
- Interactive content – sliders, scrubbable numbers, buttons and more, to control outputs like plots, numbers and tables.
- Reproducibility – Pluto notebooks are easy to share, and anyone can open a notebook and run it themselves.
And our goal is to make this as easy as possible to set up and use. This is how we do that:
- A modern look – Pluto is built on “smart defaults”. Instead of endless themes and settings pages, we have one modern design that is designed to look best on today’s web.
- Interactive content – Pluto uses reactivity to make everything interactive. We believe that reactive global variables are the most accessible way to make notebooks interactive. Interactive UI (sliders) works using the same mechanism (reactive globals), which means that anyone can learn how to use it. Pluto is not the most advanced interactivity tool for Julia, but it is the easiest to learn.
- Reproducibility – using reacitivity, a built-in package manager, binder and more, we try our best to make sure that Pluto notebooks are reproducible by default. Our hope is to make Julia notebooks just like Powerpoint, Photoshop and Excel files – you can open them, and they will work.
Examples
To see examples of interactive lectures, take a look at the featured notebooks.
For assignments
We also want people to learn by doing. There are several ways for students to get involved in the course by programming themselves. For example:
- Open assignments – students can create a new notebook to solve a problem.
- Guided assignments – you can write a notebook with assignments, and let students fill in the gaps. Pluto is great for this! For some examples, take a look at the homeworks from Computational Thinking at MIT.
- Remixing lecture notes – since Pluto notebooks are reproducible, students can easily run the lecture notes (on binder, or locally) and play around with the code.
Guided assignments
Pluto is great for a style of assignment, which we will call “guided assignments”.
The idea is a notebook that contains:
- Text to explain the assignment.
- Cells with
missing
content, where students fill in their code. - Cells that check the student’s answer, and give feedback.
- Bonus text and resources to explain more concepts. For example, you can add a foldable section that explains how parametric types work in Julia, for students who want to dive deeper.
Examples
For some examples, take a look at the homeworks from Computational Thinking at MIT, in particular Homework 1 and Homework 3, which are also featured Pluto notebooks.
JuliaCon talk
JuliaCon 2021 presentation on using Pluto at MIT, with interactive lectures and guided assignments.
PlutoSplitter.jl
One tool that may help you with guided assignments is PlutoSplitter.jl. This package lets you write a homework notebook with all the solutions already filled in, and then split it into two files: one with the solutions, and one with all answers removed. This lets you work on your answer-checking code easily, and then generate an assignment file for students.
Why Julia for education?
We believe that Julia is a great language for scientific education! Here are the main advantages from an educational perspective:
Code as communication tool
Julia has very expressive syntax, which can make your code look similar to the math or pseudocode that you use in your course. We think that (well-written) Julia code is relatively easy to understand by students and scientists, even if they don’t know Julia that well. Watch the TED talk by Alan Edelman about this topic.
This is a core concept in Pluto – you can use code to tell your story, and not just outputs from code (like plots and numbers). That’s why Pluto lets you decide for each cell whether to show the code or not.
Easy access to core CS and math concepts
Unlike Python, R and JavaScript, Julia gives you direct access to core CS concepts like memory, pointers, bytecode, baremetal performance and more, if you want! And unlike C++ and Rust, you also don’t have to worry about these things. This means that you can teach your course in a high-level way (to cover many topics), and also touch upon core CS concepts in a lecture, without having to switch to a different language.
Good way to learn Python
Let’s be honest, many students will complain that your course is not using Python. Well, learning Julia is also an excellent way to learn Python! Julia teaches core programming skills that are very transferrable to Python – it’s not a waste of time. Even better, learning another language gives you a wider view of the programming landscape, which will help you be more creative.
Connection to open source and the scientific community
The Julia community is very open and welcoming, and Julia users are much more likely to contribute to open source projects than more established languages. This is a big advantage for students who are entering the scientific community, because Julia offers many opportunities to collaborate and get involved.