An introduction to the Julia programming language: How to write composable interdisciplinary software

On 17th and 18th February 2022 I will host an introduction to Julia workshop at the Applied and Computational Mathematics laboratory at RWTH Aachen University. The format will be two half-day sessions, most likely virtual or hybrid. Everyone who is curious about the Julia programming language is welcome. The main point of the sessions will be to convey Julia's unique focus on composable software, its potential for scientific computing as well as its suitability for interdisciplinary research. One of the sessions will be hands-on, such that you can directly get a first peek at using Julia in practice. The course is open to everyone (academic staff, PhD students, undergrads) inside and outside RWTH Aachen University. To participate, see the zoom link below.

Members of RWTH can also find this course on RWTHonline.

Time and location

The event will be fully virtual and hosted on zoom. To get ready please follow the installation instructions in the github repository README to download and install Julia, Jupyter as well as the necessary Julia dependencies.

The planned schedule for the sessions is:

Day Time Session
Th 17/02 09:00 - 12:00 Introduction to basic Julia: Syntax and concepts
Fr 18/02 14:00 - 17:00 Hands-on session: A peek at practical Julia

Zoom link (for both sessions)
Course material
Feedback form

Prerequisites

In the course I will only spend little time on introducing the Julia programming constructs. It is therefore highly recommendable that you are already familiar with another programming language such as Python, MATLAB, C++, FORTRAN, etc.

It is further advisable to take a quick look at the notebook 01_Variables_Control_Packages.ipynb in advance of the course as I will only spend little time on it on Thursday.

Abstract of the course

The Julia programming language offers a design that bridges the traditional gap between easy-to-read scripting languages like python or MATLAB and traditional compiled languages like C or FORTRAN for high-performance numerical computations (HPC). More precisely Julia is both: Readable and fast. It enjoys being part of the exascale club of languages that have achieved a parallel performance of exaflops per second (next to only C and FORTRAN). At the same time the syntax feels a lot like MATLAB or python, which has lead to a rapidly growing number of application packages ranging from numerical analysis, statistics to the general simulation sciences (physics, chemistry, climate science, geology, ...). In the interdisciplinary setting of these problems a key advantage of Julia is the ability to liquify the barrier between a "beginner language" and an "HPC language", such that both users and codes can be scaled up continuously. Most notably the road from initial prototype scripts to the high-performance regime is continuous and does not require a full rewrite of the entire code base. At the same time Julia allows to target multiple platforms and can be compiled down to vectorised code for modern CPUs, GPUs as well as other accelerators. Being able to accommodate the research interests of multiple communities Julia is the ideal language for interdisciplinary research in the simulation sciences.

In this introductory course I will demonstrate the power of the Julia language based on a few show cases from statistics, numerical analysis, chemistry and physics. Key language features will be explained by examples and by giving participants the chance to try them in small exercises. Some hints how to use Julia in a multidisciplinary research environment, e.g. to seamlessly setup and maintain complex and reproducible workflows will be given. The course will include an overview of the Julia package ecosystem with state-of-the-art packages for optimisation, linear algebra, symbolic algebra, solving PDEs, ODEs as well as modern tools such as automatic differentiation and scientific machine learning. The format is hybrid/online in the form of two half-day sessions, where the first focuses more on providing a high-level introduction and the second on hands-on sessions to get first practice with writing Julia code.

Teaching material

The full material is available on github.

Links to my related courses on Julia

Links to introductory Julia courses