Pluto for homework 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.

Open assignments

Pluto is also a good tool for open-ended assignments, where students write the complete notebook themselves. For example, you could ask students to โ€œWrite a notebook that explores the Collatz conjecture, and explain it in an interactive wayโ€. The end result could be an interactive article, or a presentation. Pluto is an easy environment for Julia newcomers to work in, which makes it easy for students to write a complete interactive article on their own.

Didactically, open-ended assignments in Pluto are really great! Pluto is designed to be a good playground to explore a computational topic. Itโ€™s safe to try things, and easy to use. By asking students to write an interactive article, you force them to dive into a topic and understand how it works.

From a technical perspective, Plutoโ€™s reproducibility is really useful. It means that students can write a notebook with packages, interactions, plots, etc., and you will know that you can open the notebook on your computer for review, without having to install or debug packages.

Manual Grading

Pluto notebooks are quite easy to review, because of the different export formats, and the reproducibility. From Fonsโ€™s experience, grading is the easiest if you ask students to hand in the assignment in HTML Export format (you can link to the documentation). HTML files are fast to open and review (you donโ€™t need to run student code). HTML files also contain the .jl notebook file if needed. I would recommend this over collecting Julia or PDF files.

Canvas SpeedGrader

If you are using Canvas for your course, you can use the SpeedGrader to review HTML files. This works very well in my experience! You can require submissions to be in HTML format, and speedgrader will let you cycle between student notebooks for grading.

You can combine this with a โ€œGrading Rubricโ€. Then you will see the rubric next to the studentโ€™s notebook.

Screenshot of canvas speedgrader with a student notebook

Automatic Grading

There are several small projects to do autograding of Pluto notebooks. TODO (feel free to contribute)