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.
Here’s our evil plan to take over the world:
Let’s look in more detail at writing lectures and assignments in Pluto.
Pluto is great for writing lectures in the “Pluto style”. This means lectures with:
And our goal is to make this as easy as possible to set up and use. This is how we do that:
Examples
To see examples of interactive lectures, take a look at the featured notebooks.
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:
Pluto is great for a style of assignment, which we will call “guided assignments”.
The idea is a notebook that contains:
missing
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.
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.
We believe that Julia is a great language for scientific education! Here are the main advantages from an educational perspective:
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.
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.
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.
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.