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 diagrammatic methods (such as the ZX calculus) and open-source Python APIs. 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. The teaching week will feature both teoretical segments and practical quantum programming sessions.

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 twice a year.

Course dates

13th May 2024Oxford University Department of Computer Science - Held in the Department11 places remaining.
2nd September 2024Oxford University Department of Computer Science - Held in the Department13 places remaining.
7th April 2025Oxford University Department of Computer Science - Held in the Department13 places remaining.


At the end of the course, students will:

  • understand the fundamentals of quantum computing

  • know how to create and execute quantum programs using open-source Python APIs

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


The theoretical part of the course is taught using diagrammatic methods, such as the ZX calculus. The practical part of the course is taught using open-source Python APIs, such as the IBM Qiskit API.

  1. Basics of Quantum Computing: states, gates, measurements, observables.
  2. Variational Quantum Circuits: VQE, quantum machine learning.
  3. Physical Simulations: Hamiltonian simulation, Quantum Annealing.
  4. Quantum Optimisation: problem Hamiltonians, the Quantum Annealing Algorithm (QAA), the Quantum Approximate Optimisation Algorithm (QAOA).
  5. Quantum Error Correction: the stabilizer formalism, CSS codes, the surface code, lattice surgery.
  6. Measurement-Based Quantum Computing: 1D and 2D cluster states, gate teleportation, flow.


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

Detailed pre-requisites for this course:

There is no official textbook for this course, but the following references might prove helpful: