Very exciting news! My firm has been engaged by one of the largest data science training companies in Australia to develop a two-day commercially-available Julia course!
The brief I get is that we should assume little to no programming for the attendees. Given that’s the idea, I want to crowd-source some ideas as to what can be taught in two days. Any ideas welcome!
I see that Julia academy has two types of courses, one for Intro and one for machine learning. So I want to cover those. I think travelling salesman type problems and NP-completeness would be really fun to teach, but unfortunately, I don’t know much about JuMP.jl yet so would appreciate pointers to good intro optimization problems that attendee can learn to solve in half-a-day. I know ODE-solvers in Julia are world-class but I know even less about ODEs, so that would be out for the intro to Julia I will be teaching.
Of course I should teach DataFrames.jl and DataFramesMeta.jl.
From experience in 2 days with people who don’t know programming you have to significantly scale down teaching ambitions to a few important and useful concepts to them. (And make them do a lot of small exercises)
Assuming that these folks are interested in data wrangling, teaching JuMP or DiffEq is probably a bit too much? Why not focus on explaining the type system and key julia concepts, IO, DataFrames, plots, ScikitLearn.jl and (if you have time) either flux or Knet?
Is the assumption that the 2 day class should have little to no programming exercises, or that the attendees have little to no programming knowledge/experience? The latter I find hard to believe.
It’s this. I think the boss has a good sense for these kind of things. I think it’s corporations or government that have a training budget and there are attendees that are Julia curious.
I think two days would cover, intro to programming with Julia, ifs, loops, struct, intro to type system. Then optimization with Optim.jl and JuMP.jl (simple problems) and machine learning (kmeans,simple neural networks (something “for the attendees to aspire to”, at the end of the 2nd day).
Do the attendees want to learn how to program, or are they managers/advisers who just want to know why Julia is so suitable for data science?
It may be worthwhile to speak to a few of the prospective attendees to find out what exactly they want to get out of this 2-day class.
This is a tough one. I think I am guided by the boss who is commissioning this work. The brief is quite clear “assume no programming experience”. Once we get our first batch, then we can gather feedback. But the idea of an intro course is to basically have no entry requirements apart from some basic maths skills.
It will be important to find out if the attendees need to learn how to program (using Julia), or if they need to know what you can do with Julia. If you need to teach how to program, then @tlienart’s advise is good: don’t try to teach too many things at once: the fundamentals of programming, machine learning, optimization algorithms, etc. etc. Instead I would show them how to download data from the internet and store it locally. How to load the data into Dataframes, how to get summary statistics and how to plot things to explore what the data can tell them. This would also give you chance to start from scratch: download and install Julia, install Jupyter and the Atom editor with Juno (or Visual Studio) and how to find and install Julia packages.
If you need to teach what you can do with Julia, entirely different course material will be appropriate. In that case I would touch on such things as
- That Julia was developed to address the two language problem (one for scripting, the other for performance)
- Why Julia can get close C performance and how it compares to the performance of languages such as Python and R.
- That there is a large eco-system surrounding Julia. Give examples of real world problems being solved by Julia programs and examples of Julia packages and how they make it easier to solve those real world problems.
- The fact that there is a lot of support available from the Julia community (for example this discourse forum) and commercial support from JuliaComputing
- A “live” demonstration of applying Julia to some kind of data science problem (from obtaining and wrangling the data to producing a nice looking result/report.
Contract signed! Officially starting course development today!