Thank you for participation in the “Julia in the classroom” session and thank you for your comments and insights.
Following the discussion during the BOF meeting, please find below some quick notes and conclusion. Please fell free to comment and add your materials that you can share.
The points here are what we were able to note down. Some of them are obviously commonly known issues, but still we think it is good to voice them.
If we are missing something important then just add a comment please!
Currently Julia is taught to very heterogeneous groups of students:
- across many domains (engineering, mathematics, physics, economics/business)
- different level of studies (undergraduate, graduate, doctoral)
- students have different levels of programming background and expectations
- with either focus on programming or just as a tool that helps to solve a problem in a particular domain
Crucial issues when teaching Julia:
- It would be very good to have a good book with introduction to Julia 1.0.
- Making sure that core packages install on all major platforms in a stable way.
- Cutting down Julia latency (actually this is most crucial when teaching).
- New users need to be pointed to a collection of packages that just work and are their best-of-breed (e.g. several packages for plotting exist, the choice is not obvious and changes over time)
Some thoughts on “selling” Julia to students:
- Do not focus on performance or language comparisons at start.
- Highlight programmer productivity (e.g. LOC, LOC vs speed compared to other languages).
- Highlight readability (Julia code is almost 1-2-1 with written algorithm in the documentation)
- Ability to understand internals by the students to improve their understanding of the topic (the internals are usually written in Julia)
- In many courses just focus on problem solving and sell Julia as a tool (do not concentrate on just teaching Julia). Similarly teaching good programming practices and using Julia as a tool is a good approach.
- Have a portfolio of good showcases (please share showcases in the comments below to help others!).
- It is actually important to teach students how they can reach out to Julia community to get help.
- PyPlot.jl is currently considered as plotting option that is simplest to use (providing good plotting is crucial, DataVoyager.jl here is very promising).
- Julia type system and multiple dispatch can be effectively used to teach students that problems have structure (e.g. different types of data call for different kinds of plots or data analysis techniques).
We are looking forward to your comments,
Przemyslaw and Bogumil
Thanks for the useful comments; sorry I couldn’t make it to the BOF.
one of the things we said in the BOF session was comparing the Julia implementation not with the one in other languages, but with the scientific algorithm itself. (This is one of the points on the main post)
In my JuliaCon talk I present two such cases. You can find the talk here https://www.youtube.com/watch?v=7y-ahkUsIrY&t=2017s but most importantly you can find the slides themselves here https://github.com/Datseris/juliacon2018talk
you are more than welcome to use them if you wish so!
Hi, all. Here are links to some of my Julia outreach talks. These are aimed more at the faculty, grad student, and upper undergrad rather than entirely introductory.
Julia PDE benchmark. This talk presents a numerical algorithm for simulating a simple 1d nonlinear partial differential equation. It shows the mathematical derivation of the algorithm and how the Julia code corresponds tightly to the mathematics, and it compares the Julia code to Matlab, Python,C, C++, and Fortran implementations of the algorithm. Best of both worlds
Why Julia? This is an introductory talk on Julia aimed at people with applied math experience and Matlab/Python/C/Fortran backgrounds. The thesis of the talk is Julia: easy as Matlab, fast as Fortran, flexible as Python, deep as Lisp. Examples include linear algebra, ordinary and partial differential equations, linear algebra over a Galois field, high-precision singular values of a Hilbert matrix, understanding just-in-time compilation with
@code_* macros, and simple maniupulations of expressions and uses of parallelism constructs.
The talks are missing all the verbal explanation I give when presenting them live,. I hope to add some basic annotation for that to make them more readable on their own.
Everyone’s welcome to use them, whole or in pieces.
As for a book, we are working with a few of the founders to get a book out. Focusing on Julia programming and not on data science, ML, or numerical analysis. More details to come later.
Excellent resources @John_Gibson thank you very much for sharing. I am super grateful for these!
if you ever put on some annotations please post again here so we are notified!
Hi, everyone. Julia Discourse now has categories for Teaching and Outreach and Diversity and Inclusion. Thanks, @xorJane!
Shall we continue this discussion over there? It might be a good to move this whole thread over. I think administrators can do that.
very nice work. thank you.
(admin: I concur, moving or copying this to the new category makes sense).
and thanks @vchuravy! He created the new categories.