I am working on a presentation for the Hong Kong Machine Learning meetup. Audience is very diverse in skills and experience; this is not a technical seminar but we assume the skills to understand the first chapters of the Deep Learning book for example.
Plan is to follow this outline:
15 min introduction to Julia under the assumption that they are familiar with Python: short history, syntax (I feel that’s more important than semantics at that level), LLVM backend, maybe code shootout Julia / Python / Matlab. Syntax is important in my mind: if I can leave the audience with the impression that they can read/write Julia code after 15 min, that can be a great motivation to start their learning curve.
15 min application to data science with stuff I did on COVID19. Code example, compartment modeling for diseases showing the quick turn-around from diagrams/formulas to code and plots.
15 min application to machine learning with an introduction to Flux.ml as a way to emphasize the high-level readability and auto-diff (and macro system without uttering the word macro), probably using bits of the Flux model zoo. And emphasize how general the framework is, and the easy use of GPUs.
If anyone has material for 1 and 3, I will be grateful! If no materials, comments from your experience will be useful.
I previously give a Julia talk at my University, but it was longer, about 1 hours, you can see at https://github.com/dmolina/julia_presentacion. It is done a plugin over notebook, RISE, that allowed you to see the notebook as slides, allowing me to run examples in real time (but with your time, it is difficult). Also, in previous threads in discourse there are also materials better than mine.
I recommend to compare some implementations of functions in Python, Matlab with Julia. I nice trick I do was to compare implementations in fibonacci and its time with Python and Julia. (I am bad, I know )
Lately, I am working on Flux, but I have few experience. I recommend also to see Metalhead, as a example of classifying animals in images (because it has pretrained models, like VGG19).
I am not sure it is realistic to cover all this in 15 minutes. Given the time constraints, I would skip the history, LLVM, and the shootout, and just say that it was written to be fast and convenient, and it is. Then focus on the language.
Again, I am not sure this is a realistic goal (for any serious language) — even if your audience is so naive that you succeed in this, it will be a false impression.
Instead, I would recommend tying in the language example with dissecting a few of the actual functions you use in your part 2. Eg make slides where you have a function of 10-20 lines, and explain what each line does.
I agree with everything Tamas said - 15 minutes isn’t nearly enough time to do all the things you want, so you have to kill your darlings.
When I teach, I always try to remember that I don’t really have to actually “teach” my students anything. Learning is much more effective if you can inspire the students to seek knowledge themselves. This holds all the more the less time you have available. So think: how can I inspire my audience and point them in the right direction to learn more?
With that in mind, when I do Julia intros I always like to begin by summarizing the old mission statement from 2012, especially the part from “We want a language that’s…” to “Did we mention that…”. I point out that this was incredibly ambitious, bordering on completely crazy, and full of apparent contradictions. And yet Julia has already managed to realize it all. That still blows my mind.
All good advice. Thanks a lot for the pointers and how quickly you send that. I’ll give it a first crack and road-test it beforehand to polish it.
That’s another point that I didn’t mention: the incredibly friendly and useful community. Also, in a sense, this is a true consequence of the language since reuse of someone else’s code is so easy and encourage everyone to collaborate instead of duplicating.