The Julia Programming Language
Julia is a high-level programming language designed for high-performance numerical analysis and computational science. Distinctive aspects of Julia’s design include a type system with parametric polymorphism and types in a fully dynamic programming language and multiple dispatch as its core programming paradigm. It allows concurrent, parallel and distributed computing, and direct calling of C and Fortran libraries without glue code. A just-in-time compiler that is referred to as “just-ahead-of-time” in the Julia community is used.
The code examples in this workshop are meant for running Julia on the Rivanna cluster. The Julia documentation page linked to below provides more detail on running these code examples. Attendees will be able to ask questions and receive feedback regarding workshop exercises during the Q&A session. Users will also have the opportunity to run MATLAB code on the Rivanna cluster if they have login accounts, otherwise they will be given training accounts on the cluster.
Julia Computing on Rivanna
Please see also the documentation for using Julia on Rivanna.
Recommendations
These notes are divided into four sections. The first section contains links to documentation and tutorials for the Julia programming language. Besides browsing through these links, I recommend the Julia Academy courses as well as listening to Alan Edelman’s talk “The Power of Language” (he is one of the authors of Julia). The next section is on integrated development environments for writing Julia code. Juno using the Atom editor is popular and the JuliaPro link includes Julia and Juno in one download. More recently, Visual Studio Code (VScode) is gaining adherents and I’ve included links to talks about it from the most recent Julia conference. The third section contains links for using Julia in data science and computational science. The “Introduction to Computational Thinking” is an ongoing course at MIT that uses Julia. The last section includes links to the Julia package repository and an extensive set of Julia code examples.
The Julia Language Tutorials
-
The Julia Programming Language (Official site)
https://julialang.org/ -
Julia 1.5 Documentation
https://docs.julialang.org/en/v1/ -
Julia Language Research and Development at MIT
https://julia.mit.edu/ -
Julia Academy Courses
https://juliaacademy.com/ -
From zero to Julia!
https://techytok.com/from-zero-to-julia/ -
The Power of Language
https://www.youtube.com/watch?v=nwdGsz4rc3Q -
A Julia interpreter and debugger
https://julialang.org/blog/2019/03/debuggers/ -
Introduction to Julia’s Debugger
http://webpages.csus.edu/fitzgerald/julia-debugger-tutorial/ -
The Julia Language Slack
https://julialang.org/slack/
Julia Integrated Development Environments (IDE)
-
Juno: A Flexible IDE for Julia
https://junolab.org/ -
Julia for VSCode IDE
https://www.julia-vscode.org/ -
Debugging Julia in Juno
http://docs.junolab.org/latest/man/debugging/ -
JuliaCon 2020 | (Juno 1.0) VSCode for Julia 1.0
https://www.youtube.com/watch?v=rQ7D1lXt3GM&list=PLP8iPy9hna6Tl2UHTrm4jnIYrLkIcAROR&index=2 -
JuliaCon 2020 | Using VS Code for Julia development | David Anthoff
https://www.youtube.com/watch?v=IdhnP00Y1Ks&list=PLP8iPy9hna6Tl2UHTrm4jnIYrLkIcAROR&index=152 -
Visual Studio Code
https://code.visualstudio.com/
Julia and Data Science / Computational Science
-
Doing Scientific Machine Learning (SciML) With Julia
https://live.juliacon.org/talk/C9FGPP -
SciML / DifferentialEquations.jl
https://github.com/SciML/DifferentialEquations.jl -
Julia for Data science
https://ucidatascienceinitiative.github.io/IntroToJulia/ -
Tutorial to Learn Data Science with Julia
https://www.analyticsvidhya.com/blog/2017/10/comprehensive-tutorial-learn-data-science-julia-from-scratch/ -
Flux: The Julia Machine Learning Library
https://fluxml.ai/Flux.jl/stable/ -
Introduction to Computational Thinking
https://computationalthinking.mit.edu/Fall20/ -
Julia: A Fresh Approach to Numerical Computing
https://julialang.org/assets/research/julia-fresh-approach-BEKS.pdf -
Quantitative Economics with Julia
https://julia.quantecon.org/index_toc.html -
JuliaHPC Meeting
https://discourse.julialang.org/t/juliahpc-meeting/49093 -
JuliaCon 2020 | MPI.jl: Julia meets classic HPC | Simon Byrne
https://www.youtube.com/watch?v=pV-8YqfOxQE&list=PLP8iPy9hna6Tl2UHTrm4jnIYrLkIcAROR&index=88 -
Parallel Computing in Julia
https://docs.julialang.org/en/v1/manual/parallel-computing/
Julia Examples
-
JuliaHub: Package Repository
https://juliahub.com/ui/Home -
Julia by Example
https://juliabyexample.helpmanual.io/