Intensive Julia workshop: "Zero2Hero"

Hi everyone,

for a long time now I wanted to make a Julia workshop that had the following properties:

  1. It is intensive, and can be done in one day. I always prefer such intensive workshops, I think they are much more efficient in teaching anything, from coding to physics to arts.
  2. It shows the truly important (in my eyes) language features while skips details about other features.
  3. It teaches everything necessary in order use Julia like a pro (*)

So I thought, what this workshop should be like in order to achieve these goals, and I came up with the following things, that I was able to fit in a workshop that spanned one day (the participants suggested that it would be better to do in two days though, and I agree with them after doing the workshop):

  • Basic syntax: loops, collections, functions, broadcasting
  • Performance caveats: type stability and memory allocation
  • Multiple dispatch and the type system
  • Using Julia packages and how well Julia packages play with each other

The results are contained in the following video, and all workshop materials are on GitHub:

Hope it helps, and please feel free to share and re-use as much as you want!

(*) of course, to truly use Julia like a pro you need weeks (if not months) of experience, but I honestly believe that the basic knowledge necessary in order to do that is not that big and can indeed be shown in a full day workshop. And I think this is a huge asset of Julia.


Thanks for sharing, this looks good and I’ll likely point my students or other julia-curious people to it. A minor thing that I found is that in your demonstration of type stable vs unstable, the unstable example actually runs just as fast as the stable one (yay compiler!).

1 Like

Hah yeah, it was surprisingly difficult for me to come up with very basic examples that showed the problems of both type instability as well as memory allocation, because Julia has gotten so good in the minor versions following 1.0… :smiley: I still hope that the examples that I chose illustrate the concept of the problem, even if they don’t show the actual problem.

1 Like

I had the same issue over the last couple of years with my workshops: examples that have been slow in one Julia version were suddenly fast in newer versions. Mostly I was fighting constant propagation and alike :slight_smile:

1 Like

Easiest solution would be to eval a user input to determine the type of something. If Julia can constant prop that, we have bigger issues.

Thanks for this George, I jumped straight to the last third and I loved it, well done!

Thank you for your kind words. In general I think I should apologize, because the quality for the third part is actually noticeably lower: everyone was super tired after the first 5 brutal hours so we all agreed (off-camera) to go through this last part “faster” than the previous ones… That’s why I agreed with the students that if I remake this tutorial, I will make it 2 days: the first day the first two sessions, the second day two sessions about packages, with much more exercises and hands-on stuff.

The nice thing of the third part is that it is super useful for people already deep into the Julia world, who no longer need to go through part 1 and 2. Part 3 is great because it addresses the problematic discoverability issue, there is always a new amazing package to discover in the ecosystem, no matter how long you’ve been around. It could easily be made into a 10 chapter video series, to be honest, and still be far from done!