Data Science and Research Software Engineering Training
Training in data science, research software engineering and data engineering from the University of Bristol.
We provide free online training workshops to all University of Bristol staff and students as part of our university-wide training programme. This includes workshops on data science, coding/programming, use of high performance computing (HPC) and best practices. Our training workshops receive consistently great feedback from attendees.
Join our training alerts mailing list
We offer additional in-person training by arrangement with specific groups, such as centres for doctoral training (CDTs) or doctoral training partnerships (DTPs). For more information, please contact us.
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.
Training schedule
You will be able to book onto courses 4 weeks in advance, via online booking forms on the course directory. We’ll send updates to our mailing list when new booking forms are available. Please make sure you’re signed up, if you’d like to get the announcements!
Course | Date | Time | Location | Registration |
---|---|---|---|---|
Beginning Python | Wednesday 2 October 2024 | 1-4pm | Online | Course Full |
Intermediate Python | Wednesday 9 October 2024 | 1-4pm | Online | Course Full |
Intro to Data Analysis in Python | Wednesday 16 October 2024 | 1-4pm | Online | Course Full |
Beginning R | Monday 21 October 2024 | 1-4pm | Online | Register |
Intermediate R | Wednesday 23 October 2024 | 1-4pm | Online | Register |
Intro to Data Analysis in R | Friday 25 October 2024 | 1-4pm | Online | Register |
Best Practices in Software Engineering | Wednesday 30 October 2024 | 1-4pm | Online | Registration not yet open |
Applied Data Analysis in Python | Wednesday 6 November 2024 | 1-4pm | Online | Registration not yet open |
Introducing Version Control with Git | Wednesday 13 November 2024 | 1-4pm | Online | Registration not yet open |
Parallel Python | Wednesday 20 November 2024 | 1-4pm | Online | Registration not yet open |
Course directory
- Fundamentals
- Python
- R
- Julia
- C, C++ and Fortran
- Machine learning
- Data visualisation
- Software engineering
- High performance computing (HPC)
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
Advice for teachers
All of our workshops have enough detail such that they can be studied as self-guided workshops by individuals. When taught, they work best as three-hour workshops with a 5-10 minute break every hour. The best approach is to walk through the material via live-coding, and then giving time for students to complete the exercises that are at the bottom of most pages. The answers are linked. We recommend, if teaching online, that you have both a lead presenter, who talks through the material and live-codes, and a narrator, who types in chat to highlight key points, plus answer text-based questions from students, solve technical issues, or triage questions across to break-out rooms with helpers (if you have any). A lead and narrator together can run classes for about 50-70 students, assuming either that students have already installed any pre-requisite software (such as anaconda python) or you have some helpers around at the start who can help debug any technical issues. We have taught up to 120 students at a time, but recommend for this number that you will need at least 1-2 extra helpers who can work with small groups in break out rooms.
There is in general more material in each course that the average student will get through in the three hours as there is always a wide spread of abilities. Make sure to point out the material will remain online and encourage them to go through it in their own time after the session. We always encourage that students use their own computers / laptops to run the material so that they can more easily carry on afterwards. All of our workshops work well on Windows, MacOS or Linux.
We are in the process of recording videos of our most popular workshops and putting them on YouTube. This should help students refresh material, as well as enabling others to run these workshops using a “virtual trainer”.
Contacts and credits
These courses are maintained and delivered by the teams at the University of Bristol’s Jean Golding Institute and the Advanced Computing Research Centre. If you have any questions, feedback or suggested topics for training (including bespoke training sessions), please contact us.
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.