Key Information

Tutor: Dr Christopher Cooling 
Course Duration: 3 x 2 hour workshops 
Format: Live (In-Person) & Live (Online)
Course Credit (PGR only): 1 credit 
Audience: Research Degree Students, Postdocs, Research Fellows

Dates

  • 19, 22 & 23 January 2026
    10:00-12:00, South Kensington
  • 16, 17 & 18 June 2026
    14:00-16:00, MS Teams

Central processing units of modern computers contain multiple cores capable of carrying out computations independently. This architecture can be leveraged by writing computer programs that perform calculations on multiple cores simultaneously. These parallel programs allow us to split up the computational load and complete a given task faster. This is a vital technique for many large-scope research problems, such as the simulation of large or intricate systems, or the analysis of large amounts of data.

In this advanced course, you will learn to using the “threading”, “multiprocessing” and “mpi4py” packages to write parallel code in Python. You will learn underlying principles and practical approaches to writing parallel code, many of which will translate to other languages.

Syllabus:

  • Introduction to parallel programming
  • The “threading” module
  • The “multiprocessing” module
  • MPI and “mpi4py”
  • Parallel code design


This course does not assume any prior knowledge of parallel programming but does assume a good understanding of the fundamentals of Python, experience working on projects of a significant size and complexity, and well as knowledge of some specific packages (see the pre-requisites section). Attendees who do not meet these requirements should take other ECRI courses, undertake independent study, or practice building significant Python projects before attending.

The course will include lecture-style sections, discussions of worked examples and exercises for attendees to complete. At the end of the course there will be time for attendees to work on larger and more complete projects to practice what has been learned earlier in the course.

This course is aimed at intermediate and advanced Python programmers who want to learn to write parallel code to speed up calculations in their research.

This course is open to Research Degree Students, Postdocs & Research Fellows. Limited spaces available for wider Imperial community.

Learning Outcomes:

After completing this workshop, you will be better able to:

  • Understand the basics of how parallel computing works
  • Judge when it’s appropriate to use different parallel programming techniques
  • Use the basics of a selection of parallel processing libraries in Python
  • Apply the basics of parallel programming to simple practical problems

Prerequisites

This is an advanced Python course and is not suitable for novices. Attendees should have the following knowledge and experience:

  • Complete comfort with the fundamentals of Python is required. This includes loops, if-statements, and functions. These topics are taught in the online course Introduction to Python for Researchers. You should also have used these skills in a practical  project of a significant size.
  • Familiarity with the basics of using the Linux command line is required. This topic is covered in the ECRI course The Linux Command Line for Scientific Computing.
  • Familiarity with the basics of Numpy is required. This topic is covered in the ECRI course Numerical Computing in Python with NumPy and SciPy.
  • Familiarity with reading and writing to files, augmented assignment operators, positional and keyword function arguments, and default parameter values would be helpful. These topics are taught in the online course Intermediate General Python.

How to book

 

Please ensure you have read and understood ECRI’s cancellation policy before booking