# From zero to Julia! Learn how to code in Julia

**URL:** <https://discourse.julialang.org/t/from-zero-to-julia-learn-how-to-code-in-julia/33595>\
**Category:** Teaching & Outreach\
**Tags:** announcement, classes\
**Created:** [January 20, 2020, 5:17pm UTC](https://discourse.julialang.org/t/from-zero-to-julia-learn-how-to-code-in-julia/33595 "2020-01-20T17:17:35Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![aurelio-amerio](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aurelio-amerio/32/10489_2.png) [@aurelio-amerio](https://discourse.julialang.org/u/aurelio-amerio)\
**Post date:** [January 20, 2020, 5:17pm UTC](https://discourse.julialang.org/t/from-zero-to-julia-learn-how-to-code-in-julia/33595/1 "2020-01-20T17:17:35Z")

</div>

Hello! In the past few months I’ve been writing [a series of introductory lessons](https://techytok.com/from-zero-to-julia/) to the Julia language. They cover the basics of Julia and gradually move on to more advanced topics, including plotting, parallel computing, GPU computing and code optimization.

Here is a complete list of the lessons:

- INTRODUCTION TO JULIA
  - [How to install Julia](https://techytok.com/atom-and-juno-setup-for-julia/)
  - [Introduction to the REPL](https://techytok.com/introduction-to-the-repl/)
  - [Lesson 1 - Variables and Types](https://techytok.com/lesson-variables-and-types/)
  - [Lesson 2 - Functions](https://techytok.com/lesson-functions/)
  - [Lesson 3 - Data Structures](https://techytok.com/lesson-data-structures/)
  - [Lesson 4 - Control Flow](https://techytok.com/lesson-control-flow/)
  - [Lesson 5 - Broadcasting](https://techytok.com/lesson-working-with-arrays/)
  - [Lesson 6 - Variable Scope](https://techytok.com/lesson-variable-scope/)
  - [Lesson 7 - Modules](https://techytok.com/lesson-modules/)
  - [Lesson 8 - Types](https://techytok.com/lesson-types/)

- ADVANCED TOPICS
  - [Lesson 9 - Packages](https://techytok.com/lesson-packages/)
  - [Lesson 10 - Plotting](https://techytok.com/lesson-plotting/)
  - [Lesson 11 - Numerical Integration](https://techytok.com/lesson-numerical-integration/)
  - [Lesson 12 - Units of measurement](https://techytok.com/lesson-unitful/)
  - [Lesson 13 - Interacting with Python](https://techytok.com/lesson-interacting-with-python/)
  - [Lesson 14 - Data storage: HDF5](https://techytok.com/lesson-jld/)
  - [Lesson 15 - Parallel computing](https://techytok.com/lesson-parallel-computing/)
  - [Lesson 16 - Modules and multi-processing](https://techytok.com/multiprocessing-in-julia-module/)
  - [Lesson 17 - Code optimisation](https://techytok.com/code-optimisation-in-julia/)
  - [Lesson 18 - GPU computations](https://techytok.com/lesson-arrayfire/)
  - [Lesson 19 - Package Registration and Tests](https://techytok.com/lesson-package-registration/)

This series of lessons is a work in progress, and as I write more material I will update the [main page](https://techytok.com/from-zero-to-julia/).

Currently I’m planning to write three more lessons, one about meta-programming, one on how to call other programming languages (such as c++, Mathlab, Fortran, etc) and finally one about type annotations and multiple dispatch.

Please let me know what you think about these lessons and if you have any suggestions on topics which you think should be covered!

---

<div class="post-metadata">

**Author:** ![Christopher\_Fisher](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/christopher_fisher/32/26132_2.png) [@Christopher\_Fisher](https://discourse.julialang.org/u/Christopher_Fisher)\
**Post date:** [January 20, 2020, 5:39pm UTC](https://discourse.julialang.org/t/from-zero-to-julia-learn-how-to-code-in-julia/33595/2 "2020-01-20T17:39:15Z")

</div>

I looked through a few of your lessons and I think they look very useful. One minor thing that might useful to add to your lessons on parallel computing is using` @everywhere` with a `begin` block to load multiple items without using individual `@everywhere` annotations. For example,

```julia
@everywhere begin 
    using ....
    include(...)
    ... 
end

```

I look forward to the lesson on macros, which is something I have not used so far!

---

<div class="post-metadata">

**Author:** ![Nosferican](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nosferican/32/9275_2.png) [@Nosferican](https://discourse.julialang.org/u/Nosferican)\
**Post date:** [January 20, 2020, 8:10pm UTC](https://discourse.julialang.org/t/from-zero-to-julia-learn-how-to-code-in-julia/33595/3 "2020-01-20T20:10:52Z")

</div>

Aye. It is pretty common in distributed systems (e.g., HPC) to have a main file and that one having a

```julia
@everywhere include(joinpath("src", "common.jl"))

```

---

<div class="post-metadata">

**Author:** ![dmolina](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dmolina/32/5246_2.png) [@dmolina](https://discourse.julialang.org/u/dmolina)\
**Post date:** [January 20, 2020, 9:42pm UTC](https://discourse.julialang.org/t/from-zero-to-julia-learn-how-to-code-in-julia/33595/4 "2020-01-20T21:42:04Z")

</div>

Nice! I already knew them, great job!

I suggest you to use [https://www.juliabloggers.com/](https://www.juliabloggers.com/) to give it a little more visibility.

---

<div class="post-metadata">

**Author:** ![aurelio-amerio](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aurelio-amerio/32/10489_2.png) [@aurelio-amerio](https://discourse.julialang.org/u/aurelio-amerio)\
**Post date:** [January 21, 2020, 9:18am UTC](https://discourse.julialang.org/t/from-zero-to-julia-learn-how-to-code-in-julia/33595/5 "2020-01-21T09:18:27Z")

</div>

Thank you! I for one have never particularly used constructs like decorators in Python and now macros in Julia (except a few ones which are provided by libraries), so I am not confident enough to write a guide about them…

---

<div class="post-metadata">

**Author:** ![ctkelley](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ctkelley/32/10684_2.png) [@ctkelley](https://discourse.julialang.org/u/ctkelley)\
**Post date:** [May 16, 2020, 5:54pm UTC](https://discourse.julialang.org/t/from-zero-to-julia-learn-how-to-code-in-julia/33595/6 "2020-05-16T17:54:09Z")

</div>

This is very useful and my students will hear about it soon. I’d also like to cite this in a book project. I’ll cite it as a web page unless someone has a better idea. I would appreciate such a better idea.

---

<div class="post-metadata">

**Author:** ![aurelio-amerio](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aurelio-amerio/32/10489_2.png) [@aurelio-amerio](https://discourse.julialang.org/u/aurelio-amerio)\
**Post date:** [May 19, 2020, 9:14pm UTC](https://discourse.julialang.org/t/from-zero-to-julia-learn-how-to-code-in-julia/33595/7 "2020-05-19T21:14:09Z")

</div>

I think that citing a website using the Harvard format would be appropriate. In my opinion it is elegant and concise (I’ve found it on this article [https://www.mendeley.com/guides/web-citation-guide](https://www.mendeley.com/guides/web-citation-guide) ).  
I won’t change the url [From zero to Julia! - TechyTok](https://techytok.com/from-zero-to-julia/) so you can safely use it, if you want.

Thank you very much for your interest!

---

<div class="post-metadata">

**Author:** ![ctkelley](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ctkelley/32/10684_2.png) [@ctkelley](https://discourse.julialang.org/u/ctkelley)\
**Post date:** [May 19, 2020, 9:27pm UTC](https://discourse.julialang.org/t/from-zero-to-julia-learn-how-to-code-in-julia/33595/8 "2020-05-19T21:27:11Z")

</div>

Thanks. My publisher has a BiBTeX style for web pages, so I’m in fine shape.

— Tim

---

<div class="post-metadata">

**Author:** ![aurelio-amerio](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aurelio-amerio/32/10489_2.png) [@aurelio-amerio](https://discourse.julialang.org/u/aurelio-amerio)\
**Post date:** [May 19, 2020, 9:33pm UTC](https://discourse.julialang.org/t/from-zero-to-julia-learn-how-to-code-in-julia/33595/9 "2020-05-19T21:33:04Z")

</div>

Wonderful! Please let me know once it gets published!

---

<div class="post-metadata">

**Author:** ![xiaodai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xiaodai/32/15937_2.png) [@xiaodai](https://discourse.julialang.org/u/xiaodai)\
**Post date:** [May 20, 2020, 3:13am UTC](https://discourse.julialang.org/t/from-zero-to-julia-learn-how-to-code-in-julia/33595/10 "2020-05-20T03:13:25Z")

</div>

I noticed that it’s not listed in [Get started with Julia](https://julialang.org/learning/)

Perhaps you can PR an update the page to include this?

---

<div class="post-metadata">

**Author:** ![aurelio-amerio](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aurelio-amerio/32/10489_2.png) [@aurelio-amerio](https://discourse.julialang.org/u/aurelio-amerio)\
**Post date:** [May 20, 2020, 7:50am UTC](https://discourse.julialang.org/t/from-zero-to-julia-learn-how-to-code-in-julia/33595/11 "2020-05-20T07:50:19Z")

</div>

Thank you, I’ve submitted a PR!

---

<div class="post-metadata">

**Author:** ![leclere](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/leclere/32/3644_2.png) [@leclere](https://discourse.julialang.org/u/leclere)\
**Post date:** [June 3, 2020, 8:32am UTC](https://discourse.julialang.org/t/from-zero-to-julia-learn-how-to-code-in-julia/33595/12 "2020-06-03T08:32:12Z")

</div>

Thanks for the work. I find the presentation easy to follow and each lesson is well sized. I like the comparison with python, as most students here have some pythonic knowledge. I am planning of using it as a pointer for my course next year.
