I’m working on my poster for JuliaCon, and there’s a part of it that uses a visual guide to teach software practices and principles, Julia style.
I’ve just about read every intro tutorial and the Julia manual - but I haven’t yet seen too many visuals / diagrams on how to teach to Julia novices how to “think” about buildong types and dispatches as the guiding principle for their design.
This got me thinking into how we actually teach the visual metaphors for Julia (besides paragraphs, plots and code). Have you used any? How would you describe it? I’d very much welcome any materials you have used, be it memes, video clips, interpretative dancing or anything!
I think the most important thing is showing people code being built up and the results of it’s execution.
I’m not really sure what to suggest for a poster, but for those doing slide shows, I’d strongly reccomend checking out RISE which lets you turn a Jupyter notebook into an interactive slideshow in the browser. You can have Jupyter cells appear, run them then when someone asks you a question you can just change the input to the cell and run it again without ever leaving your slideshow. It’s really handy and I think quite important for communicating code.
I recently used it to give a talk where I introduced the basics of Julia, complained about finite difference derivatives and then implemented a basic Dual number and taught them about automatic differentiation while creating the AD system in front of their eyes.
I agree that using RISE + Jupyter is an awesome combination for sharing and presenting code, but perhaps I can clarify what I mean.
When we teach matrix multiplication, some people highlight rows and columns of the respective matrices to show how the elements where calculated.
When people teach comparison sorting, we use binary trees for their visual and mathematical correspondence to the problem at hand.
Programming in Julia we use (probably!) More than code.
This post is an invitation to collect different visuals of how people think Julia “works” and how they teach it.
Oh I see, yes I misunderstood what you were asking for.
I think one very good visual metaphor would be show a type hierarchy as a tree and then colouring various parts of the tree to show which parts are covered by a given function method. This may help with explaining multiple dispatch.
Thanks for the example. I think the tree and type hierarchy is most useful for explaining
UnionAll and parametric dispatch.
(imo) a short snip [and some eliding] of the type hierarchy that allows you to color types to show that methods+multidispatch signature specializations are shared among related types (aor over jointly held abstract types) and also not shared between disparate types.
I am not sure about this. I think I would find visual aids just confusing without adding value.
Visual aids? Great idea! Here is something.
When I went to primary school (elementary school) in Scotland I was given number rods to learn arithmetic. I loved the time when the box of number rods was put on each child’s desk. What are number rods? Bars of painted wood, about a centimetre square. The rods have different lengths, in multiples of the rod which represents one.
So where does Julia come in? I guess you could lay out arrays using number rods, then demonstrate broadcasting.
I’m willing to be surprised here!
I think its unlikely that sock puppets are helpful , but what about a useful diagram on how to use dispatch? If it worked for your friend/student, I’d like to hear about it.
I consider myself a person who prefers information in a visual form when that makes sense (eg plots vs tables), but honesly I can’t imagine anything here that would aid explaining multiple dispatch.
All visual aids are metaphors. Some, like plots, use commonly established conventions, so there is nothing (or very little) you need to introduce. OTOH, inventing a visual aid for eg dispatch may just require an explanation that takes more time than showing a code example, and at the same time may not be accurate enough to convey the right picture.
I’m skeptical too; communication is challenging. Thus why I would be glad to know about any successes people have had.