
Learn how to connect to HPC systems, navigate the command line, manage files, and develop the essential skills needed to work effectively in computational research environments through Foundation in Bash, a cornerstone of High-Performance Computing (HPC).
“Navigating and Working in HPC Environments” provides a practical introduction to Bash, equipping you with the essential skills to interact with and manage Linux-based systems effectively.
What you will learn:
- Connect to an HPC system securely
- Navigate the file system and manage directories
- Work efficiently within the command line environment
- Transfer data between local and remote systems
- Access and organise files in appropriate locations
- Prepare and launch your first job on an HPC system.
By the end of the course, you will be able to use the command line effectively to manage your working environment and carry out essential tasks autonomously.
As part of the broader Foundation HPC Skills series*, this course supports your development in HPC by establishing the core knowledge needed to work confidently within HPC environments.
No prior experience with programming, Linux, or HPC is required, only basic familiarity with using a computer.
* The Foundation HPC Skills series introduces core principles and tools needed to work effectively in HPC environments, from connecting and using our systems for the first time (Bash) to writing robust maintainable and managed code, and then running that code (Scalability).

Dive into Git, the industry-standard version control system, and learn how to manage your code and collaborate effectively as part of a team.
“Managing Code and Collaborating Effectively” provides a practical introduction to Git, equipping you with the essential skills to organise, track, and safeguard your code while collaborating seamlessly within teams.
What you will learn:
- Track changes in your code over time
- Manage different versions of your work
- Recover earlier versions when needed
- Collaborate effectively on shared projects
- Configure Git for your working environment
- Explore repository history
- Work with branches to support parallel development
- Synchronise changes with remote platforms such as GitHub
By the end of the course, you will be able to manage your code in a structured, repeatable and reliable way, supporting best practice in research and software development.
As part of the broader Foundation HPC Skills series*, this course supports your development in HPC and your collaborative work by helping you track changes, resolve conflicts, and maintain a traceable code history, which improves reproducibility.
No prior experience with programming, Linux, or HPC is required, only basic familiarity with using a computer.
* The Foundation HPC Skills series introduces core principles and tools needed to work effectively in HPC environments, from connecting and using our systems for the first time (Bash) to writing robust maintainable and managed code, and then running that code (Scalability).

Understand the core principles of Software Engineering and gain the skills to write clear, efficient, and maintainable code for High-Performance Computing (HPC) applications.
"Building Robust and Maintainable Code" provides a practical introduction to Software Engineering, developing your understanding of good programming practices and preparing you to build reliable software for research and technical applications.
What you will learn:
- Apply fundamental software engineering principles
- Write clear, structured, and maintainable code
- Understand key programming concepts and code organisation
Improve software usability and readability - Work with common development workflows and practices
- Recognise and apply standard development life cycles
By the end of the course, you will be able to approach coding tasks with a structured mindset, producing higher-quality software that is easier to maintain and extend.
As part of the broader Foundation HPC Skills series*, this course supports your development in High-Performance Computing (HPC) by introducing good practice and the advantages of software engineering for HPC applications.
No prior experience with programming, Linux, or HPC is required, only basic familiarity with using a computer.
* The Foundation HPC Skills series introduces core principles and tools needed to work effectively in HPC environments, from connecting and using our systems for the first time (Bash) to writing robust maintainable and managed code, and then running that code (Scalability).

Understand the importance of good documentation, code review processes, and testing practices — and their impact on the long-term viability of High-Performance Computing (HPC) code.
"Ensuring Quality and Reliability in Code" provides a practical introduction to software testing, documentation, and code review, equipping you with the essential skills to produce reliable and maintainable software.
What you will learn:
- Understand the role and importance of software testing
- Apply basic testing strategies and approaches
- Plan and run effective test processes
- Use tools to support testing and development workflows
- Review code using established good practices
- Document your work clearly and effectively
By the end of the course, you will be able to improve the quality, reliability, and transparency of your code through structured testing and documentation practices.
As part of the broader Foundation HPC Skills Series*, this course supports your development in HPC by building your understanding of why quality assurance practices are critical in modern development and research environments.
No prior experience with programming, Linux, or HPC is required, only basic familiarity with using a computer.
* The Foundation HPC Skills series introduces core principles and tools needed to work effectively in HPC environments, from connecting and using our systems for the first time (Bash) to writing robust maintainable and managed code, and then running that code (Scalability).

Explore the challenges of scalability and learn how to address them to develop efficient parallel code for High-Performance Computing (HPC) environments.
Developing Efficient Parallel Code provides a practical introduction to key concepts to successful HPC applications, such as scalability and parallel computing, helping you navigate scaling issues and troubleshoot them to build efficient parallel code.
What you will learn:
- Understand the principles of parallel computing and scalability
- Identify the challenges of scaling code on HPC systems
- Submit and manage jobs using Slurm
- Analyse the performance and limitations of your code
- Perform strong and weak scaling analyses
- Apply techniques to improve computational efficiency
By the end of the course, you will be able to evaluate and optimise how your code performs on HPC systems, enabling more efficient and effective use of computational resources.
As part of the broader Foundation HPC Skills series*, this course supports your development in High-Performance Computing (HPC) by by helping you understand how code performs at scale and how to optimise it for parallel systems.
No prior experience with programming, Linux, or HPC is required, only basic familiarity with using a computer.
* The Foundation HPC Skills series introduces core principles and tools needed to work effectively in HPC environments, from connecting and using our systems for the first time (Bash) to writing robust maintainable and managed code, and then running that code (Scalability).