# Basic workflow suggestions for teaching Julia

**URL:** <https://discourse.julialang.org/t/basic-workflow-suggestions-for-teaching-julia/87713>\
**Category:** New to Julia\
**Tags:** workflow, teaching\
**Created:** [September 23, 2022, 5:48pm UTC](https://discourse.julialang.org/t/basic-workflow-suggestions-for-teaching-julia/87713 "2022-09-23T17:48:55Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![ChrM](https://avatars.discourse-cdn.com/v4/letter/c/5e9695/32.png) [@ChrM](https://discourse.julialang.org/u/ChrM)\
**Post date:** [September 23, 2022, 5:48pm UTC](https://discourse.julialang.org/t/basic-workflow-suggestions-for-teaching-julia/87713/1 "2022-09-23T17:48:55Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![jlperla](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jlperla/32/34332_2.png) [@jlperla](https://discourse.julialang.org/u/jlperla)\
**Post date:** [September 23, 2022, 6:13pm UTC](https://discourse.julialang.org/t/basic-workflow-suggestions-for-teaching-julia/87713/2 "2022-09-23T18:13:56Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [September 23, 2022, 7:18pm UTC](https://discourse.julialang.org/t/basic-workflow-suggestions-for-teaching-julia/87713/3 "2022-09-23T19:18:09Z")

</div>

> [@ChrM](#):
>
> What would be your suggestions for a simple Julia workflow for drafting small scripts including mostly built-in functions from existing packages?

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](https://github.com/mitmath/julia-mit).

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

---

<div class="post-metadata">

**Author:** ![ChrM](https://avatars.discourse-cdn.com/v4/letter/c/5e9695/32.png) [@ChrM](https://discourse.julialang.org/u/ChrM)\
**Post date:** [September 23, 2022, 8:49pm UTC](https://discourse.julialang.org/t/basic-workflow-suggestions-for-teaching-julia/87713/4 "2022-09-23T20:49:21Z")

</div>

Thanks! My intention is to make a “gentle” introduction to programming and definitely not trigger an uprising 🤞! 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 😓).

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

---

<div class="post-metadata">

**Author:** ![ChrM](https://avatars.discourse-cdn.com/v4/letter/c/5e9695/32.png) [@ChrM](https://discourse.julialang.org/u/ChrM)\
**Post date:** [September 23, 2022, 8:58pm UTC](https://discourse.julialang.org/t/basic-workflow-suggestions-for-teaching-julia/87713/5 "2022-09-23T20:58:44Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![lmiq](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lmiq/32/18314_2.png) [@lmiq](https://discourse.julialang.org/u/lmiq)\
**Post date:** [September 23, 2022, 9:04pm UTC](https://discourse.julialang.org/t/basic-workflow-suggestions-for-teaching-julia/87713/6 "2022-09-23T21:04:08Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Paul\_Soderlind](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/paul_soderlind/32/1753_2.png) [@Paul\_Soderlind](https://discourse.julialang.org/u/Paul_Soderlind)\
**Post date:** [September 23, 2022, 9:54pm UTC](https://discourse.julialang.org/t/basic-workflow-suggestions-for-teaching-julia/87713/7 "2022-09-23T21:54:40Z")

</div>

novice friendly stuff here:

> **[GitHub - PaulSoderlind/JuliaTutorial: Julia Tutorial for Finance and...](https://github.com/PaulSoderlind/JuliaTutorial)**
>
> Julia Tutorial for Finance and Econometrics Students - GitHub - PaulSoderlind/JuliaTutorial: Julia Tutorial for Finance and Econometrics Students
