# Request: What visual aids do you use to teach Julia?

**URL:** <https://discourse.julialang.org/t/request-what-visual-aids-do-you-use-to-teach-julia/25324>\
**Category:** New to Julia\
**Tags:** question\
**Created:** [June 14, 2019, 10:34pm UTC](https://discourse.julialang.org/t/request-what-visual-aids-do-you-use-to-teach-julia/25324 "2019-06-14T22:34:15Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![miguelraz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/miguelraz/32/631_2.png) [@miguelraz](https://discourse.julialang.org/u/miguelraz)\
**Post date:** [June 14, 2019, 10:34pm UTC](https://discourse.julialang.org/t/request-what-visual-aids-do-you-use-to-teach-julia/25324/1 "2019-06-14T22:34:15Z")

</div>

Hello all!  
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!

Thanks!

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [June 14, 2019, 10:59pm UTC](https://discourse.julialang.org/t/request-what-visual-aids-do-you-use-to-teach-julia/25324/2 "2019-06-14T22:59:04Z")

</div>

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](https://github.com/damianavila/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.

---

<div class="post-metadata">

**Author:** ![miguelraz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/miguelraz/32/631_2.png) [@miguelraz](https://discourse.julialang.org/u/miguelraz)\
**Post date:** [June 14, 2019, 11:10pm UTC](https://discourse.julialang.org/t/request-what-visual-aids-do-you-use-to-teach-julia/25324/3 "2019-06-14T23:10:02Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [June 14, 2019, 11:28pm UTC](https://discourse.julialang.org/t/request-what-visual-aids-do-you-use-to-teach-julia/25324/4 "2019-06-14T23:28:57Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![miguelraz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/miguelraz/32/631_2.png) [@miguelraz](https://discourse.julialang.org/u/miguelraz)\
**Post date:** [June 14, 2019, 11:33pm UTC](https://discourse.julialang.org/t/request-what-visual-aids-do-you-use-to-teach-julia/25324/5 "2019-06-14T23:33:13Z")

</div>

Yes! Precisely!

Thanks for the example. I think the tree and type hierarchy is most useful for explaining `UnionAll` and parametric dispatch.

---

<div class="post-metadata">

**Author:** ![JeffreySarnoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jeffreysarnoff/32/1980_2.png) [@JeffreySarnoff](https://discourse.julialang.org/u/JeffreySarnoff)\
**Post date:** [June 15, 2019, 12:12am UTC](https://discourse.julialang.org/t/request-what-visual-aids-do-you-use-to-teach-julia/25324/6 "2019-06-15T00:12:14Z")

</div>

(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.

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [June 15, 2019, 9:51am UTC](https://discourse.julialang.org/t/request-what-visual-aids-do-you-use-to-teach-julia/25324/7 "2019-06-15T09:51:43Z")

</div>

> [@miguelraz](#):
>
> Programming in Julia we use (probably!) More than code.

I am not sure about this. I think I would find visual aids just confusing without adding value.

---

<div class="post-metadata">

**Author:** ![johnh](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/johnh/32/3615_2.png) [@johnh](https://discourse.julialang.org/u/johnh)\
**Post date:** [June 15, 2019, 10:44am UTC](https://discourse.julialang.org/t/request-what-visual-aids-do-you-use-to-teach-julia/25324/8 "2019-06-15T10:44:05Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![JeffreySarnoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jeffreysarnoff/32/1980_2.png) [@JeffreySarnoff](https://discourse.julialang.org/u/JeffreySarnoff)\
**Post date:** [June 15, 2019, 11:05am UTC](https://discourse.julialang.org/t/request-what-visual-aids-do-you-use-to-teach-julia/25324/9 "2019-06-15T11:05:26Z")

</div>

Cuisenaire Rods hooraah

---

<div class="post-metadata">

**Author:** ![miguelraz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/miguelraz/32/631_2.png) [@miguelraz](https://discourse.julialang.org/u/miguelraz)\
**Post date:** [June 15, 2019, 11:39am UTC](https://discourse.julialang.org/t/request-what-visual-aids-do-you-use-to-teach-julia/25324/10 "2019-06-15T11:39:20Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [June 15, 2019, 2:33pm UTC](https://discourse.julialang.org/t/request-what-visual-aids-do-you-use-to-teach-julia/25324/11 "2019-06-15T14:33:05Z")

</div>

> [@miguelraz](#):
>
> what about a useful diagram on how to use dispatch?

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.

---

<div class="post-metadata">

**Author:** ![miguelraz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/miguelraz/32/631_2.png) [@miguelraz](https://discourse.julialang.org/u/miguelraz)\
**Post date:** [June 15, 2019, 6:32pm UTC](https://discourse.julialang.org/t/request-what-visual-aids-do-you-use-to-teach-julia/25324/12 "2019-06-15T18:32:46Z")

</div>

I’m skeptical too; communication is challenging. Thus why I would be glad to know about any successes people have had.
