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. Feel free to distribute the link to this page to anyone who could be interested. If you want to participate, please register by providing your name and email in this survey. I'll follow up with more details by email and send around the zoom link closer to the event.

Members of RWTH can also find this course on RWTHonline.

Time and location

The event will most likely be virtual or hybrid. I'll follow up with the zoom link closer to the date of the course (please register here). The rough schedule for the sessions (to be confirmed) is:

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

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.

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 will follow. Feel free to contact me any time if you have some questions or topics you would like me to cover during the course.

For some ideas what the course will be like, feel free to take a peek at my previous courses and lectures on Julia: