2026-11-01 –, Seminar Room 1
The tutorial will give a brief overview of the high-performance scientific programming language Julia. It will show how Julia solves the two language problem by compiling command-line expressions directly to machine code. It will touch on performing calculations using measurements (i.e., value-error pairs), units, symbolic manipulation, and GPU programming. It will conclude by showing how the combination of multiple dispatch and abstract types result in concise, generic, and high-performance software. The tutorial assumes a basic knowledge of scientific programming.
The objectives of the tutorial are to show how Julia is a versatile, general-purpose programming language and how function calls using multiple dispatch combined with abstract types, results in concise, modular, and highly performant code.
Set-up instructions for the Julia workshop:
Before the workshop, install Julia on your laptop. Julia can be downloaded from the Julia language website or using the juliaup version manager. The latest stable release (1.13.1) is preferred. It contains many new features and performance improvements.
Once Julia is installed, install the Pluto package by entering the following command in a terminal. Package installation may take several minutes to complete while the package and its dependencies are downloaded and pre-compiled.
> julia -e 'using Pkg; Pkg.add("Pluto");
Your laptop is now ready for the workshop.
One final note, you should invoke the threads option when using Julia for the workshop. This can be done either from the command line:
> julia --threads=auto
or by setting the environment variable (e.g., the bash shell):
> export JULIA_NUM_THREADS = auto
FYI, Pluto is Julia's version of the Jupyter notebook. There is no need to install Python or Jupyter. One of Julia's strengths is its package manager, which makes package installation and management painless.
Paul Barrett is an Associate Research Professor in the Department of Physics at The George Washington University. His studies focus on multi-wavelength observations of Cataclysmic Variable stars, primarily at radio frequencies. He also has over forty years of scientific software experience in astronomy including the development of Scientific Python beginning thirty years ago. He is currently a lead developer for several Julia programming language projects and a member of the JuliaAstro steering council.