Key Information
Tutor: Dr Christopher Cooling
Course Level: Level 3
Course Credit: 1 credit
Prerequisites: This is an advanced Python course and is not suitable for novices (see below for further details)
Course Duration: 3 x 2 hour workshop
Format: Face to Face, or Remote Teaching on MS Teams. Course materials may also be self-studied.
Prerequisites
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.
Course Resources
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.
This advanced course covers techniques and a selection of Python packages that allow parallel computing. Specifically, this course focuses on:
- The “threading” package
- The “multiprocessing” package
- MPI and the “mpi4py” package
These packages are common parallel programming packages which also cover several different approaches to parallel programming. Many of the techniques and approaches will be applicable to other programming languages.
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 Graduate School courses, undertake independent study, or practice building significant Python projects before attending.
Course Information:
This course includes discussions of theory and general practice as well as practical examples using the packages mentioned above. 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.
Learning Outcomes:
By the end of the blended course, 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
Dates & Booking Information
- Monday 17 February 2025 (Part 1), Tuesday 18 February 2025 (Part 2) & Wednesday 19 February 2025 (Part 3), 12:00-14:00, South Kensington (In-Person Teaching)
- Tuesday 17 June 2025 (Part 1), Wednesday 18 June 2025 (Part 2) & Friday 20 June 2025 (Part 3), 14:00-16:00, Microsoft Teams
To book your place, please follow the booking process advertised on the main programme page