New to programming? Learn the basics of programming using python in eight one-hour sessions over the course of four weeks. Sessions will consist of a mix of lectures and hands-on exercises.
Format: In-person. Sessions will be recorded.
Our training covers many topics in Research Computing and Data Science, in a variety of forms, such as webinars, workshops, and multi-week courses. Some events are online, while others are in-person, but many of the latter are also broadcast and recorded.
A full catalogue of past and present courses is available here. Access to slides and recordings is open to anyone, but to register for courses and to work towards a SciNet certificate, login is required. Apart from the University of Toronto graduate courses in the list, all training events are free of charge.
New to programming? Learn the basics of programming using python in eight one-hour sessions over the course of four weeks. Sessions will consist of a mix of lectures and hands-on exercises.
Format: In-person. Sessions will be recorded.
In about 90 minutes, learn how to use the SciNet systems Niagara and Mist, from securely logging in to running computations on the supercomputer. Experienced users may still pick up some valuable pointers.
Format: Virtual
Container computing is gradually changing the way researchers are developing, sharing, and running software applications. Apptainer (formerly called Singularity) is gaining popularity in HPC for its performance, ease of use, portability, and security. In this course, we will explore: what is a container, why use a container, and how to use and create one.
Format: Virtual
C++ is a high level programming language that is extremely useful for scientific applications. The language has historically had a bad reputation, but modern C++ is much improved so that your code can be relatively short and elegant. In this workshop we will teach the basics of C++ for people who are familiar with the basics of programming, and we will especially compare and contrast C++ with Python (only the material covered in SCMP142 "Intro to Programming with Python" is required). Knowing multiple programming languages may be a useful skill: while Python is a wonderful programming language, execution speed is often a practical issue for pure Python applications. For applications where this is an issue, coding in C++ can significantly improve performance. As C++ can relatively easily be integrated in a Python project, it is also possible (and common) to code just the bottleneck in that language.
Format: Virtual
Learn how to write bash scripts, use environment variables, how to control process, and much more. Requires some Linux basic command line experience.
Format: Virtual
In about 60 to 90 minutes, you will learn how to use the SciNet systems. Experienced users may still pick up some valuable pointers.
Format: Virtual
Using version control for your scripts, codes, documents, papers, and even data, allows you to track changes, keep backups, and facilitate collaboration. In this workshop, you will learn the basics of version control with the popular distributed version control software GIT. This workshop assumes that students have an understanding of basic Linux shell commands.
Format: Virtual
Working with many of the HPC systems (like those at SciNet) involves using the Linux/UNIX command line. This provides a very powerful interface, but it can be quite daunting for the uninitiated. In this half-day session, you can become initiated with this coursse which will cover basic commands. It could be a great boon for your productivity.
Format: Virtual
Learn the basics of Message Passing Interface (MPI) programming. Examples and exercises will be based on parallelization of common scientific computing problems.
Format: Virtual
In about 90 minutes, learn how to use the SciNet systems Niagara and Mist, from securely logging in to running computations on the supercomputer. Experienced users may still pick up some valuable pointers.
Format: Virtual
This course is aimed at reducing your struggle in getting started with computational projects, and make you a more efficient computational scientist. Topics include well-established best practices for developing software as it applies to scientific computations, common numerical techniques and packages, and aspects of high performance computing. While we will introduce the C++ language, in one language or another, students should already have some programming experience. Despite the title, this course is suitable for many physical scientists (chemists, astronomers, ...).
This is a graduate course that can be taken for graduate credit by UofT PhD and MSc students. Students that wish to do so, should enrol using ACORN/ROSI.
This is an in-person course.
In about 90 minutes, learn how to use the SciNet systems Niagara and Mist, from securely logging in to running computations on the supercomputer. Experienced users may still pick up some valuable pointers.
Format: Virtual
Managing large amounts of data can be a challenging task. Processing large numbers of files incur heavy overhead of IO communications. This course explores several options such as using Apptainer Overlay and SQLite to pack and reduce a large number of files to few files, and hence, improving IO performance. Python scripts are used throughout the course.
Format: Virtual
Parallel programming in Python. We will cover subprocess, numexpr, multiprocessing, MPI, and other parallel-enabling python packages.
Format: Virtual
In about 90 minutes, learn how to use the SciNet systems Niagara and Mist, from securely logging in to running computations on the supercomputer. Experienced users may still pick up some valuable pointers.
Format: Virtual
Working with many of the HPC systems (like those at SciNet) involves using the Linux/UNIX command line. This provides a very powerful interface, but it can be quite daunting for the uninitiated. In this half-day session, you can become initiated with this course which will cover basic commands. It could be a great boon for your productivity.
Format: Virtual
An overview of GPUs and their use in supercomputers. This workshop will explain what GPUs are, and cover the basic ideas of GPU use in scientific computing. We will introduce several GPU programming frameworks, and demonstrate how to accelerate a solution of a science problem using a GPU. Python or C++ could be used for the assignment.
Format: Virtual
Learn the basics of shared memory programming with OpenMP. In particular, we will discuss the OpenMP execution and memory model, performance, reductions and load balancing.
Format: Virtual
In about 90 minutes, learn how to use the SciNet systems Niagara and Mist, from securely logging in to running computations on the supercomputer. Experienced users may still pick up some valuable pointers.
Format: Virtual
Debugging is an important step in developing a new code, or porting an old one to a new machine. In this session, we will discuss the debugging of frequently encountered bugs in serial code and debugging of parallel (MPI and threaded) codes using DDT.
Learn how to write bash scripts, use environment variables, how to control process, and much more. Requires some Linux basic command line experience.
Format: Virtual
In about 90 minutes, learn how to use the SciNet systems Niagara and Mist, from securely logging in to running computations on the supercomputer. Experienced users may still pick up some valuable pointers.
Format: Virtual
This six-week class will introduce neural network programming concepts, theory and techniques. The class material will begin at an introductory level, intended for those with no experience with neural networks, eventually covering intermediate-to-advanced concepts.
Format: Virtual
In about 90 minutes, learn how to use the SciNet systems Niagara and Mist, from securely logging in to running computations on the supercomputer. Experienced users may still pick up some valuable pointers.
Format: Virtual
Principles and uses of relational databases with practical examples using python and sqlite on the Niagara supercomputer.
Format: Virtual
This workshop explores various concise and useful constructs for working with bash shell. The goal is to improve your shell skills. Attending this class requires some basic GNU/Linux command line experience.
Format: Virtual
This course will provide an introduction to the theory, formalisms and algorithms of quantum computing. The programming language will be Python; experience with Python will be assumed. Experience with quantum mechanics is not necessary; an introductory-level understanding of linear algebra will be assumed.
This will be an in-person course. Dates and details TBD.
In about 90 minutes, learn how to use the SciNet systems Niagara and Mist, from securely logging in to running computations on the supercomputer. Experienced users may still pick up some valuable pointers.
Format: Virtual
An introduction to basic concepts in High-Performance Computing (HPC). This is intended to be a high-level primer for those largely new to HPC. Topic will include motivation for HPC, available HPC resources, essential issues, problem characteristics as they apply to parallelism and a high-level overview of parallel programming models.
Format: Virtual
Working with many of the HPC systems (like those at SciNet) involves using the Linux/UNIX command line. This provides a very powerful interface, but it can be quite daunting for the uninitiated. In this half-day session, you can become initiated with this course which will cover basic commands. It could be a great boon for your productivity.
Format: Virtual