Content from Using Markdown
Last updated on 2025-09-25 | Edit this page
Overview
Questions
- How do you write a lesson using Markdown and sandpaper?
Objectives
- Explain how to use markdown with The Carpentries Workbench
- Demonstrate how to include pieces of code, figures, and nested challenge blocks
Introduction
This is a lesson created via The Carpentries Workbench. It is written in Pandoc-flavored Markdown for static files and R Markdown for dynamic files that can render code into output. Please refer to the Introduction to The Carpentries Workbench for full documentation.
What you need to know is that there are three sections required for a valid Carpentries lesson:
-
questions
are displayed at the beginning of the episode to prime the learner for the content. -
objectives
are the learning objectives for an episode displayed with the questions. -
key points
are displayed at the end of the episode to reinforce the objectives.
Challenge 1: Can you do it?
What is the output of this command?
R
paste("This", "new", "lesson", "looks", "good")
OUTPUT
[1] "This new lesson looks good"
Challenge 2: how do you nest solutions within challenge blocks?
You can add a line with at least three colons and a
solution
tag.
Figures
You can use standard markdown for static figures with the following syntax:
{alt='alt text for accessibility purposes'}
Callout sections can highlight information.
They are sometimes used to emphasise particularly important points but are also used in some lessons to present “asides”: content that is not central to the narrative of the lesson, e.g. by providing the answer to a commonly-asked question.
Math
One of our episodes contains \(\LaTeX\) equations when describing how to create dynamic reports with {knitr}, so we now use mathjax to describe this:
$\alpha = \dfrac{1}{(1 - \beta)^2}$
becomes: \(\alpha = \dfrac{1}{(1 - \beta)^2}\)
Cool, right?
- Use
.md
files for episodes when you want static content - Use
.Rmd
files for episodes when you need to generate output - Run
sandpaper::check_lesson()
to identify any issues with your lesson - Run
sandpaper::build_lesson()
to preview your lesson locally
Content from Introduction to HPC Systems
Last updated on 2025-09-25 | Edit this page
Overview
Questions
- Did you know you have to have this question section?
Objectives
- Describe the purpose of an HPC system and what it does
- Differentiate between characteristics and features of HPC and cloud-based systems
- List the benefits for using an HPC system
- Identify how an HPC system could benefit you
- Summarise the typical arrangement of an HPC system’s components
- Summarise the capabilities of the NOCS HPC facilities
- Summarise the key capabilities of IRIDIS5/6/X for NOCS applications
- Summarise key capabilities of national HPC resources and how to access them
Lesson content goes here
- You need a list of key points
Content from Accessing and Using HPC Resources
Last updated on 2025-09-25 | Edit this page
Overview
Questions
- Did you know you have to have this question section?
Objectives
- Summarise the process for applying for access to IRIDIS / OpenOnDemand
- Summarise how access to HPC systems is typically secured
- Describe how to connect to an HPC system using an SSH client program
- Describe how to transfer files to and from an HPC system over an SSH connection
- Summarise best practices for managing generated research data
- Explain how the shell environment changes when the module mechanism loads or unloads packages
Lesson content goes here
- You need a list of key points
Content from Introduction to Job Scheduling
Last updated on 2025-09-25 | Edit this page
Overview
Questions
- Did you know you have to have this question section?
Objectives
- Describe briefly what a job scheduler does
- Summarise how to query the available resources on an HPC system
- Describe a minimal job submission script and parameters that need to be specified
- Summarise how to submit a batch job and monitor it until completion
- Contrast when to run programs on an HPC login node vs running them on a compute node
- Summarise the process for requesting and using an interactive job
Lesson content goes here
- You need a list of key points
Content from Introduction to Programmatic Parallelism
Last updated on 2025-09-26 | Edit this page
Overview
Questions
- Did you know you have to have this question section?
Objectives
- Describe the concept of parallelisation and its significance in improving performance
- Compare and contrast the operations and benefits of shared and distributed memory systems
- Differentiate between parallelising programs via processes and threads
- Define a race condition and how to avoid them
Lesson content goes here
- You need a list of key points
Content from Introduction to HPC Technologies
Last updated on 2025-09-25 | Edit this page
Overview
Questions
- Did you know you have to have this question section?
Objectives
- Differentiate at a high level between the features of OpenMP, MPI, CUDA and AI/ML approaches and what they are used for
- Briefly summarise the main OpenMP compiler directives and what they do
- Describe how to compile and run an OpenMP program
- Briefly summarise the main MPI message-passing features and how they are used
- Describe how to compile and run an MPI program
- Describe the advantages and drawbacks for using a hybrid OpenMP/MPI approach
- Briefly summarise how a CUDA program is written
- Describe why code scalability is important when using HPC resources
- Describe the differences between strong and weak scaling
- Summarise the dangers of premature optimisation
Lesson content goes here
- You need a list of key points