Course directory
Many of our training materials are also free for anyone to use as both self-led courses and pre-recorded videos via the links below. We also link to some external courses, where we think these would be valuable to the University of Bristol community.
Courses available
Fundamentals
These are courses which are not specific to any programming language. They are useful skills to have regardless of the language you are using.
-
Introduction to the Command Line Interface
- Beginner
Most R and Python users will need to interact with the command line at some point, and a strong foundation really helps.
Prerequisites: None
Python
Python is a versatile programming language. In research it is often used for simulation, machine learning, and building data pipelines.
-
Beginning Python
- Beginner
From zero python to running your first script. Understanding data types and performing computations.
Prerequisites: None
-
Intermediate Python
- Beginner
Using packages, writing functions, and learning how to deal with errors you will encounter in analyses.
Prerequisites: Beginning Python
-
Introduction to Data Analysis in Python
- Intermediate
- Data analysis
Learn to use Pandas to query, combine and visualise your data as well as Seaborn to visualise them.
Prerequisites: Beginning Python
-
Introduction to NumPy
- Intermediate
- Data analysis
Learn to use NumPy to process n-dimensional grids of numbers.
Prerequisites: Beginning Python
-
Parallel Python
- Advanced
Take advantage of the processing power of multicore processors and large compute clusters.
Prerequisites: Intermediate Python
-
Accelerating Python
- Advanced
Learn how to use Numba and Cython to get the speed of C, C++ and Fortran, whilst keeping the convenience of Python.
Prerequisites: Intermediate Python
R
R is a programming language most often used for statistics. It has great libraries for data manipulation and visualisation.
-
Beginning R
- Beginner
From zero R to running your first script. Understanding data types and coding your first calculator!
Prerequisites: None
-
Intermediate R
- Intermediate
Understanding how to use packages, write functions, and build complex pipes for analysis.
Prerequisites: Beginning R
-
Introduction to Data Analysis in R
- Intermediate
- Data analysis
Understanding how to use packages, write functions, and build complex pipes for analysis.
Prerequisites: Intermediate R
-
Text and Sentiment Analysis in R
- Intermediate
- Data analysis
Learn how to perform text and sentiment analysis tasks in R using the tidyverse collection of packages.
Prerequisites: Introduction to Data Analysis in R
Julia
-
Computational thinking with Julia
- Beginner
A 14 week course from MIT.
Prerequisites: None
C, C++ and Fortran
-
Beginning C++
- Beginner
Learn the basics of C++ modern programming.
Prerequisites: None
-
Parallel Programming with C++
- Intermediate
Learn to write modern C++ programs that can take advantage of multicore processors.
Prerequisites: Good basic understanding of C++, including loops, functions, containers and classes
-
Efficient Vectorisation with C++
- Intermediate
Learn what vectorisation is, and how you can use it to speed up your C++ programs on modern multicore processors.
Prerequisites: Good basic understanding of C++, including loops, functions, containers and classes
-
Fortran1: The basics
- Beginner
Learn the basics of Fortran programming.
Prerequisites: None
-
Introduction to Modern Fortran
- Intermediate
Learn how to use OpenMP to parallelise your C, C++ and Fortran code.
Prerequisites: Knowledge of an older standard of Fortran, such as Fortran 77, or intermediate-level C or Python
-
Advanced Parallel Fortran
- Advanced
Learn how to use coarrays to parallelise your Fortran code.
Prerequisites: Intermediate-level Fortran knowledge
-
Introduction to OpenMP
- Advanced
Learn how to use OpenMP to parallelise your C, C++ and Fortran code.
Prerequisites: Intermediate-level C, C++ or Fortran knowledge
-
OpenMP for Computational Scientists
- Advanced
Learn how to use OpenMP to parallelise your Fortran code.
Prerequisites: Intermediate-level Fortran knowledge
-
Introduction to MPI
- Advanced
Learn how to use MPI to parallelise your C, C++ and Fortran code.
Prerequisites: Intermediate-level C, C++ or Fortran knowledge
Machine learning
-
Applied Data Analysis in Python
- Intermediate
- Data analysis
- Machine learning
Learn to use scikit-learn for classic machine learning tasks.
Prerequisites: Introduction to Data Analysis in Python
-
Introduction to Neural Networks and Deep Learning in Python
- Intermediate
- Machine learning
Learn the basics of neural networks and how to use Keras (Tensorflow) to build and train neural networks.
Prerequisites: Applied Data Analysis in Python
Data visualisation
-
Graphical Data Apps in Python
- Intermediate
Learn to use Streamlit to make an interactive dashboard for your data.
Prerequisites: Introduction to Data Analysis in Python
Software engineering
Any code you write for research should be maintainable, although we don’t think everyone needs to be a software engineer to be a good researcher. These courses can equip you with the skills to write more robust, reusable, and reproducible code.
-
Version control using Git
- Beginner
Git is useful for tracking and navigating through versions of your code.
Prerequisites: None
-
Git for collaboration using GitHub
- Intermediate
As well as being useful for versioning your own code, Git is essential for coding collaboratively with others.
Prerequisites: Version control using Git
-
Best practices in software engineering
- Intermediate
How to write code for an analysis that is robust, understandable and useable by others.
Prerequisites: Recommended intermediate-level experience in, for example, R or Python
-
IDEs and Debugging
- Beginner
IDEs are software used to edit, run, and debug code. They have useful features which make your work easier.
Prerequisites: Recommended beginner-level experience in, for example, R or Python
High performance computing (HPC)
HPC is the use of computer clusters (also known as supercomputers) to solve advanced computation problems. These facilities allow you to queue processing jobs on machines that have large amounts of storage, memory or processing power.
-
Introduction to HPC
- Beginner
- HPC
Learn what high performance computing is, the HPC facilities at the University and how to get help. Members of the University can also watch on Microsoft Stream.
Prerequisites: None
-
Inroduction to Linux
- Beginner
- HPC
- University only
Elementary introduction to using Linux, for example on the University HPC.
Prerequisites: None
-
Further Linux
- Intermediate
- HPC
- University only
Expands on the basic concepts and introduces additional commands useful to researchers in a HPC environment.
Prerequisites: Introduction to Linux, or experience navigating between directories, creating new files and directories, manipulating files and using pipes and pipelines
-
Introduction to HPC with Slurm
- Intermediate
- HPC
- University only
An introduction to Linux and to our HPC clusters. It will help with creating bash scripts, HPC submission scripts and submitting jobs to the queue systems.
Prerequisites: Access to BlueCrystal or BluePebble
Many of the courses were originally developed by members of the University of Bristol’s Research Software Engineering group, with special thanks to Christopher Woods, Matt Williams and Al Tanner.