Basic workflow suggestions for teaching Julia

I would like to introduce Julia to undergraduate students that have some basic knowledge of data analysis with statistical programs (i.e. Eviews, Stata, etc).

More specifically, the core syllabus involves the basics of time series analysis, such as OLS regression and modelling. And Julia would be used as an environment for applications to real datasets and equip students for further explorations in their dissertations. My intention is to offer an interdisciplinary approach, and Julia is the ideal environment for that purpose.

Therefore, the current structure for Julia labs is as follows:

  1. Intro to Julia environment (project management, notebooks and editors, packages)
  2. Programming essentials (if-, elseif-, for-loops, functions)
  3. Data management (existing locally, acquisition via APIs, inspect-organise-clean)
  4. What’s in data? (plots, descriptive stats, distribution, autocor, volatility)
  5. OLS setup (fitting, diagnostics, information criteria)
  6. Univariate models (ARIMA)
  7. Multivariate models (VAR and causality)

What would be your suggestions for a simple Julia workflow for drafting small scripts including mostly built-in functions from existing packages?

I guess using notebooks such as Jupyter and Pluto would make things easier (for me), but I think that starting with more fundamental staff (creating working directory and project files) would make them more flexible/independent along the way of programming and adopt good programming practices with respect to reproducibility.

So, if you have to choose the absolute necessary actions when starting programming with Julia what would those be?

2 Likes

I think the key question is what you want the students to be able to use Julia for and how much investment in hours they would be putting into it. If they have only used Stata/Eviews then Julia is a pretty tough transition. Those aren’t really programming languages, so you may have to begin from scratch on basics like loops, variable scoping, functions, etc.

If you are suggesting that they just learn to replace existing standard Stata tasks with Julia then you will have a student uprising.

If they are just doing small scripts with existing packages, and it’s a math course rather than a software-engineering course, I would honestly steer away from introducting package development, projects, modules, or even data structures.

In such “Julia as a fancy calculator” classes, I just stick with Jupyter notebooks, provide basic installation instructions + a binder environment as a backup if they run into installation difficulties, and give a simple overview.

If you want to teach them software engineering and reproducible computing, of course, that’s a very different type of class.

7 Likes

Thanks! My intention is to make a “gentle” introduction to programming and definitely not trigger an uprising :crossed_fingers:! I have edited the original post with more information about the syllabus, indeed some basics to programming (loops, functions, etc.) will be demonstrated but in an applied perspective (not sure yet how I will achieve that :sweat:).

So, any novice-friendly material would be very much appreciated!

Thanks for the link, it is really helpful!

I have updated the original post with more information about the syllabus. In essence, the course deals with standard concepts in time series analysis and use Julia as an environment for applications in real datasets from various scientific fields.

My experience is that the very first thing one must teach is some workflow using Revise, or use Pluto all the way.

Overall, I think new people feel more confortable with IDEs, thus now I just recommend VSCode and company.

1 Like

novice friendly stuff here: