Advices on giving a workshop using Julia to non-programmers


In July I will be giving a workshop called “Topological Data Analysis with Julia”, at the “Brazilian Topology Meeting”. This is a famous event in Brazil that reunites many of the leading topologists in the world. Most of them are not programmers, but pure mathematicians.

What are your advices on how to present the material? Is Pluto the best way? Or a book using Quarto is enough? And what about everyone be able to run the code on my notes? How can it be interactive in an easy way?

Currently, the sketch for the instructions is as follows:

I tell the user to install Julia via juliaup, then install VSCode + julia extension; and finally (to be done) open the directory with the Manifest file to install all packages.

Do you have any experience with that kind of workshop?

Do you want to present the material or is it a hands-on session?

If participants don’t have good programming experience, try to focus on the delivery on your own computer with the platform you like most. Then, at the end share the URL for people interested.

Most people won’t be able to follow along, and you can compromise their understanding of the benefits of Julia if you ask them to run the code live. Lots of potential for basic errors and installation issues.


By the way, how is the ecosystem for TDA in Julia nowadays?

The idea is to present the material and run the code on my computer while I talk, while the audience can follow the already-ran code in a Quarto/Pluto notebook or run their own code.

The major package to calculate persistent homology is pretty well documented. I am now writing the Mapper and ToMATo algorithms in Julia, and creating some foundational packages (for example, a package that deals with arbitrary metric spaces and calculate balls, k-nearest neighbors, farthest point samples, and so on).

The major advantage of Julia is that these researchers will be able to write and explore algorithms without dealing with the 2-language-problem (if I used R or Python they would need C++ to run code in a decent speed).

Which packages? What they provide nowadays?

  • Ripserer provides the Vietoris-Rips and cubical filtrations;
  • Mapper.jl will provide the mapper algorithm together with plotting functions;
  • ToMATo.jl will provide the ToMATo clustering algorithm;
  • MetricSpaces.jl will provide the basic types and algorithms (like the epsilon-net and farthest point samples), together with some datasets (circle, torus, etc)

This is enough to analyze some data and reproduce the results of some papers famous in the TDA area.


I agree with the above. Do not ask the participants to install Julia or edit code during the workshop. It could descend into a ‘help me with this problem on my laptop’ session.
Prepare some good and simple instructions on how to use juliaup then run some Julia code. A the end of the workshop point the participants to a github repo or other source for this writeup.
Tell them you can offer some support in getting their first codes running and point them towards asking for help on this forum.

Also I vote for using a Pluto notebook.
You could also make that notebook available on
I could maybe help with that


I guess you have seen this

I did a similar thing at a microsimulation conference in January. I think it went reasonably well. A few thoughts:

  • it’s best not to do a workshop alone. Is there a colleague who can help you out? Not necessarily a Julia expert, just a second pair of eyes;
  • as mentioned, your participants are likely to struggle with basics like installation and even getting on the conference WIFI, especially as Workshops are often ahead of the conference proper. But you can allow for this, and participants will definitely learn more if they can play along. If you have a list of attendees, circulate installation instructions to them beforehand, and set aside a good half-hour at the start just for the mundane things like connecting to the conference network and getting Julia installed;
  • rather than demonstrating a long list of features, I’d recommend building some simple practical thing that your participants can make and take away with them. Pluto is excellent for this;
  • slow down. Most online demonstrations I watch are way too fast to follow along with, at least for someone as old and slow as me;
  • don’t include too much. I’d aim for just enough material to cover half the length of the workshop at a fairly slow pace. Allow time for installation woes, plenty of questions, and a comfort break;
  • it’s useful to have a rough script even if it’s only a list of key points;
  • a rehearsal really helps, especially with getting timing roughly right.



I didn’t really get to clean that up nicely, but you may also consider GitHub - bbrehm/Sparips.jl: Sparips.jl: Practical sparsification of Rips complexes

Especially for pure mathematicians, the exponential-time blowup of the Ripser algorithm on the solenoid is fun to see (and generally, fractals are a fun playground for TDA because 1. something interesting happens at many scales, and 2. it forces you to use algorithms that allow you to process evolution across many orders of magnitude, and 3. it nicely demonstrates the limitations of TDA over fields – the fun stuff happens in \mathbb{Z}-Homology).

Lots of good advices here! Thank you all for your answers. I made this small list of things I have to keep in mind:

  • install julia and editor/pluto before the workshop (prepare some time before and give detailed instructions);
  • see if I can have someone to help me during the workshop;
  • prepare some easy-to-follow topics so the people can follow along; also talk about hard topics, but with more emphasis on the ideas and results, and let the code to be consulted later;
  • try no to include too much content! let the online version of the material be complete, but use a shorter form during the workshop;
  • some people will just watch and not code. Try to not lose too much time focusing on making the code run and instead talk about ideas and results;
  • create a narrative of each lesson. things must connect with each other.

The last point I am uncertain about is using Pluto. Pluto is very nice and compiles to a notebook, but maybe a Quarto book where people can see the text and code and copy to VSCode and run line-by-line looks like more natural to me; even more when I think about how they will work on a daily basis using TDA. I am afraid that if I teach them using Pluto, they won’t be able to use VSCode to explore data later.

1 Like

Regarding notebooks, a not-to-be-overlooked advantage is that you can let people use your notebook server. That

  1. solves installation issues
  2. solves “how do i download this code” questions. Participants need a web-browser and need to type in an URL that you show on the beamer, that’s it (ip+port number).
  3. gives a very nice mode of interaction – user has some question because their code (i.e. their modification to your notebook!) acts up, you can open their notebook and show your troubleshooting on the beamer for everyone.

Config might be annoying on your side, though – you probably want to run the notebook server in a VM so your home directory doesn’t get deleted (you’re open to everyone on the local network!), and you might need some cgroups setup to prevent one participant starving the thing of memory. But if everyone is reasonable, then a laptop should be able to serve everyone.