University of Oxford Logo University of OxfordSoftware Engineering - Home
On Facebook
Follow us on twitter
Linked in
Linked in
Google plus
Google plus
Stumble Upon
Stumble Upon

Quantum Computing

Lecturer: Dr. Stefano Gogioso

Quantum computing refers to the harnessing and control of quantum mechanical phenomena to perform certain specialised computations, typically used as black-box subroutines within larger traditional programs. Access to these quantum subroutines makes it possible to design algorithms that quickly solve problems which would otherwise be unsolvable on traditional architectures.

Quantum computing has seen a sharp acceleration over the past few years, both in terms of technological advances and in terms of early access to the public. Several companies now offer and maintain programmatic APIs that allow scientists and industry innovators to program the quantum hardware they are developing, to encourage evaluation, early adoption, and creation of know-how in their target industry segments.

This module introduces the fundamentals of quantum computing through the IBM Qiskit API. Students will learn how quantum computers work, how they are programmed and how they can be used to solve problems of practical interest in the coming years. This module is hands-on and fully interactive, with all material presented in the form of Jupyter notebooks. We will cover the theoretical basics, we will perform simulations, and we will run experiments on live quantum computers.

For the assignment, students will be tasked to implement selected parts from a quantum technique appeared in recent academic papers, reproducing some of the published results.


This course normally runs three times a year.

Course dates

Future courses are expected, but yet to be scheduled.


At the end of the course, students will:

  • understand the fundamentals of quantum computing

  • know how to create and execute quantum programs using the IBM Qiskit API

  • know how to implement entry-level algorithms for machine learning and optimisation


Basics of quantum computing
states, gates, measurement, observables
Quantum Machine Learning
variational quantum circuits, parameter optimisation, quantum kernels
Quantum optimisation
the Variational Quantum Eigensolver, the Quantum Annealing Algorithm, the Quantum Approximate Optimisation Algorithm
Quantum error correction
the stabiliser formalism, stabiliser codes


Summary of pre-requisites for this course: 1. Experience in Python 3 programming and familiarity with Jupyter notebook 2. Knowledge of real linear algebra and familiarity with tensor networks 3. Awareness of the overall context for quantum computing.

  • The course is entirely taught using the Python programming language, more specifically using version 3.9+. Good Python 3 programming skills are a prerequisite for this course, e.g. at the level provided by this course.
  • The course is entirely taught using Jupyter notebooks: familiarity with Jupyter notebooks is a prerequisite for this course.
  • Solid knowledge of real linear algebra is a prerequisite for this course, e.g. at the level provided by Lessons 1-5, 8, 9 and 13 of this series.
  • A conceptual understanding of tensors, tensor networks and tensor contraction is a prerequisite for this course, e.g. as provided by the following materials:
  • Knowledge of complex linear algebra is not a prerequisite for this course. Some topics in complex linear algebra will be covered during the course, to connect to existing literature on quantum computing, but are strictly optional. Students who wish to familiarise with this optional topic prior to the teaching week can read the online Qiskit textbook introduction.
  • The course is a technical introduction to quantum computing, from day 1. For additional context, students are strongly encouraged to peruse online materials on quantum computing prior to the teaching week. Below is a brief selection, of varying tone and length:
  • We will use the Qiskit Pocket Guide as a technical reference for the programming part of the course.
  • The online Qiskit textbook provides a comprehensive reference for theory, programming and applications.