Introduction

Welcome to this course, in which you will learn and practice techniques for implementing high-performance computations using the Rust programming language!

No prior knowledge of Rust is assumed, but basic familiarity with at least one of C or C++ will be useful. Indeed, we will often introduce Rust concepts and design choices by way of comparison to those languages, which we consider to be the current standard for programmers who want fine control on performance-critical aspects of their programs like SIMD and memory management.

With the exception of the first environment setup section, which is doomed by nature to have a distinctive “choose your own adventure” writing style, this course’s material is meant to be followed exhaustively from start to end. Hence later sections will freely refer to concepts introduced by earlier sections without explaining them again in detail, and all interactive performance results and exercises will freely assume that the previous exercises have been done.

This reflects our suggested learning strategy: all things considered, we think it is better for you to accept being a little late with respect to other students and the live teacher demos, than to rush yourself without understanding the concepts clearly. To assist this strategy, the course is largely built for self-paced study, allowing you to continue following it after the school with relative ease if you did not have the time to follow through every section during the school.

Corrections for the exercises of the “Gray-Scott on CPU” part of the course are also available in the solution branch of the course material’s git repository, which you can follow commit-wise using your favorite git history visualizer. GitLab’s built-in visualization will work fine for this purpose. Just click on the red dot associated with any of the commits of the solution branch in order to see which code changes were implemented in that commit.

You can navigate between the course’s various sections using the following tools:

  • The left-hand sidebar, which provides direct access to every page.
    • If your browser window is thin, the sidebar may be hidden by default. In that case you can open (and later close) it using the top-left “triple dash” button.
  • The left/right arrow buttons, or equivalently your keyboard’s arrow keys.