From zero to Julia!
From zero to Julia is a growing series of introductory lessons to the Julia language. The aim of this course is to give you the basics to be able to start coding in Julia on your own.
During this series of lesson we will review some of the basic elements of this programming language, such as functions, variables and control flow. We will then explore the rich type system of julia and multiple dispatch (which is one of the most important Julia features). We will then learn how to work with more complex data structures, such as arrays and types. Once we have studied the basics of the Julia language, we will study how to better organise our code through packages and we will study how to optimise it for numerical efficiency.
We will finally deal with a series of advanced topics which I find of particular interest for physicists and data scientists.
This guide, as well as this website, is a work in progress: any feedback or correction is welcome! In order to make better and free content for everybody, please write your thoughts and suggestions in the discussion thread which is available under each post!
Although no prior programming background in Julia is necessary to follow this guide, basic familiarity with programming may be useful. For any clarification, don’t hesitate to contact me!
If you are ready to start, I encourage you to read the first guide on how to install Julia and VSCode and then move on to the first lesson!
VSCode: the future for Julia development
Learn how to setup a Julia development environment using VSCode.
Introduction to the REPL
An introduction to the Julia REPL and Juno IDE usage
Variables and Types
From zero to Julia Lesson 1. An introduction to variables and Types
Functions
From zero to Julia Lesson 2. An introduction to functions
Data structures
From zero to Julia Lesson 3. Data Structures
Control Flow
From zero to Julia Lesson 4. Control Flow
Working with arrays: broadcasting
From zero to Julia Lesson 5. Working with arrays: broadcasting
Variable Scope
From zero to Julia Lesson 6. Variable scope
Modules
From zero to Julia Lesson 7. Using modules and code reusability
Types and Structures
From zero to Julia Lesson 8. Types and structures
Working with Packages
From zero to Julia Lesson 9. Working with packages
Coding workflow with VSCode
From zero to Julia Lesson 10. Coding workflow: how to write code efficiently
Introduction to Plotting
From zero to Julia Lesson 11. Introduction to plotting
Numerical Integration
From zero to Julia Lesson 12. Introduction to numerical integration
Units of measurement
From zero to Julia Lesson 13. Units of measurement
Interacting with Python
From zero to Julia Lesson 14. Interacting with Python
Data storage: HDF5
From zero to Julia Lesson 15. Data storage: HDF5
Parallel computing
From zero to Julia Lesson 16. Parallel computing
Multiprocessing in Julia: writing a module
A tutorial on how to write a module in Julia which uses multiprocessing
Code optimisation in Julia
Tips and Tricks to optimise your Julia code and achieve the maximum possible speed
GPU computations
From zero to Julia Lesson 19. GPU computations using ArrayFire
Package Registration and Tests
From zero to Julia Lesson 20. Learn how to write tests for a package using Travis and how to publish a finished package to the Julia Registry
Interoperability in Julia
From zero to Julia Lesson 21. Interoperating with other programming languages
Multiple Dispatch
From zero to Julia Lesson 22. Multiple Dispatch
Julia and Docker integration
A tutorial for the installation of Docker and Julia and the setup of the Juno IDE using a dockerized Julia container
Messaging with Telegram
From zero to Julia. Learn how to send messages and files to your phone using Telegram.jl
Acknowledgements
I want to thank Elena Pinetti for all the help she has given me in proofreading these lessons and all the effort she has put in identifying which parts were not clear enough or should be rewritten.
I also want the thank the wonderful Julia community on reddit for the feedback and all the kind persons who have pointed out typos and given suggestions on how to improve this series of lessons!