Skip to content

Further training

This four-hour training provides an overview of good practices and explains why they matter for scientific work. The courses below provide more extensive hands-on treatment of particular topics. They are grouped by the need they address rather than by the organization that offers them.

The training sessions catalogue contains the complete collection, including learning paths for HPC application development and data science. A course website normally provides the training material even when no live session is currently scheduled.

Version control and collaboration

The version-control section in this training concentrates on motivation, traceability, recovery, collaboration, and scientific provenance.

  • Version control with Git provides the detailed hands-on follow-up. It covers individual and collaborative workflows, repository hosting, history, branches, graphical clients, and command-line use.

Code quality, testing, documentation, and debugging

These courses extend the code-style, documentation, and testing sections with language-specific tools and exercises.

  • Defensive programming and debugging covers coding practices, compiler and static checks, unit and functional testing, documentation, and debugging tools. It is the most language-agnostic follow-up in this group, although many examples use compiled languages.
  • C++ software engineering applies the practices to C++ projects, including CMake, static analysis, Catch2, CTest, package management, and design.
  • Python software engineering applies them to Python, including coding practices, type annotations, error handling, documentation, unit testing, and software design.

These courses concentrate mainly on software behavior. The scientific-testing section in this repository adds numerical tolerances, invariants, convergence, stochastic behavior, and parallel consistency.

Numerical reliability and scientific validation

The scientific-testing section introduces ways to obtain evidence about numerical and scientific behavior, while the reproducibility section explains how to connect a result to its code, data, parameters, environment, and workflow.

  • Trustworthy Numerical Computing develops these themes into a systematic investigation of numerical reliability. It covers floating-point arithmetic, error measures and tolerances, conditioning and stability, uncertainty propagation, common failure modes, convergence and stopping criteria, validation evidence, reproducibility across computing environments, and communicating justified reliability claims.

Performance optimization and scalability

Optimization should start only after the behavior of the program is protected by suitable tests. The optimization section provides the motivation and basic workflow; the following courses go further.

  • Code optimization covers computer architecture, scaling, memory behavior, vectorization, profiling, and performance pitfalls.
  • POP online training introduces a methodology and tools for analysing the performance of parallel applications.
  • The parallel-computing training overview links to courses on MPI, OpenMP, parallel C++, and accelerator programming.
  • Python for HPC is useful when a Python application needs profiling, compiled numerical libraries, or language-specific approaches to improved performance.

Deployment, environments, and reproducible workflows

The deployment, continuous-integration, and reproducibility sections introduce the relevant principles. The following courses cover particular execution and workflow environments.

  • Containers for HPC covers building and running portable container images in an HPC environment. Containers can capture much of a runtime environment, but they do not by themselves guarantee reproducible scientific results.
  • Workflows for HPC covers tools and practices for organizing and executing multi-step computational workflows.
  • MLOps on HPC addresses reproducible and maintainable computational experiments. Despite its name, much of the workflow guidance is also relevant outside machine learning.
  • Jupyter notebooks covers effective notebook use for exploratory programming and data analysis. Notebook files still need appropriate environment, data, testing, and version-control practices.

The catalogue currently has no dedicated general continuous-integration course. The C++ and Python software-engineering courses above cover many of the build, analysis, test, and documentation commands that a CI workflow would automate.

Scientific data and I/O

The scientific I/O and data-formats section introduces format selection, metadata, validation, checkpointing, and the relationship between access patterns and performance.

  • Best practices for data science on HPC provides the detailed follow-up. It includes experiments with tabular, textual, and image data, structured formats, and the many-small-files problem on HPC filesystems.

Programming-language foundations

This training assumes fluency in at least one programming language. If a participant needs to learn or refresh a language first, the catalogue contains the following relevant courses.

The programming overview shows how these language courses connect to software engineering, parallel computing, and GPU computing. There is currently no R-specific course in this catalogue; the R tools page provides project-tool guidance for participants using R.

Linux and HPC foundations

Command-line and HPC-system skills are prerequisites rather than topics of this training. Participants who need that background can start with

  • Linux introduction, for shell, file, process, and remote-access basics; and
  • HPC introduction, for cluster architecture, software environments, storage, schedulers, and resource use.

Finding scheduled sessions

The course websites above provide material and course descriptions; they do not necessarily show the next scheduled delivery. Current offerings and registration can be found through

Schedules, prerequisites, delivery formats, and access conditions change, so check the provider's current course page before registering.