Research Software Engineering with Julia
by
Valentin Churavy
Choose your track:
Choose...
Principles of RSE
Performance Engineering
Parallel programming
Automatic Differentiation
Welcome
Class logistics
Software installation
Resources
Module 1: Introduction
1.1
Research Software Engineering
1.2
Introduction to Julia
Exercise 1:
Functions and Unicode
Exercise 2:
Multiple Dispatch
Exercise 3:
Broadcasting and Array Comprehensions
Exercise 4:
Structs and Custom Types
Exercise 5:
Statistics
In-depth 1:
Types, Structs, and Mutable Structs
1.3
Parallelism
Exercise 6:
Shared-memory parallelism
Exercise 7:
Introduction to accelerated computing
1.4
Automatic Differentiation
Exercise 8:
Optimization of parameters
Exercise 9:
Pitfalls of AD
Exercise 10:
Gradient descent
1.5
Performance Engineering
Exercise 11:
Type Stability
In-depth 1:
Matrix multiply
Exercise 12:
Performance Annotations
Exercise 13:
Memory Layout & Cache Effects
Module 2: Github & Reproducibility
2.1
Github & Package Manager
Exercise 14:
Github
In-depth 1:
Numerical Reproducibility
In-depth 2:
Debugging
Exercise 15:
Debugging
Module 3: Parallelism
3.1
Shared-memory parallelism
In-depth 3:
Interactive performance tuning with Julia
Exercise 16:
Shared memory parallelism
3.2
GPU Computing
Exercise 17:
Introduction to KernelAbstractions
3.3
Distributed programming with MPI.jl
Exercise 18:
Running MPI.jl locally
Module 4: Automatic Differentiation
4.1
Automatic Differentiation and Machine Learning
Exercise 19:
Reverse mode AD
Exercise 20:
Machine Learning
4.2
Examples of Automatic Differentiation in Scientific Computing
In-depth 4:
Lagrangian Mechanics via AD
2026
Resources
Resources
Modern Julia Workflows
JuliaLang Discourse
JuliaLang Documentation
Julia Community
Cheatsheets
Fastrack to Julia
cheatsheet.
MATLAB-Julia-Python comparative cheatsheet
by
QuantEcon group
Plots.jl cheatsheet
Edit this page on
Website based on the MIT course
Computational Thinking
, a live online Julia/Pluto textbook
and built with
Pluto.jl
and the
Julia programming language
.