Quantum Software: 2021-2022
Lecturers | |
Degrees | Schedule C1 (CS&P) — Computer Science and Philosophy Schedule C1 — Computer Science Schedule C1 — Mathematics and Computer Science |
Term | Hilary Term 2022 (24 lectures) |
Overview
In recent years, quantum computation has moved from a theoretical exercise to a practical one, as limited, small-scale quantum computers have become increasingly available. This course, which follows on from a basic course in quantum computation, addresses the practical challenges of programming these emerging devices. Toward that end, this course splits broadly into 2 topics:
- Quantum compilation -- translating high-level descriptions of quantum algorithms into "machine code" suitable to run on quantum hardware and doing related tasks like optimisation and mapping operations on to physical memory locations
- Quantum algorithms -- developing a deeper understanding of standard oracle-based (a.k.a. "1990s style") quantum algorithms that run on big, (distant) future quantum computers, as well as new families of hybrid classical/quantum algorithms designed to run on noisy intermediate-scale quantum (NISQ) devices, which are more like the small, limited quantum computers of today
The course will cover the following topics:
- Quantum circuits and the ZX-calculus
- Quantum circuit compilation and optimisation
- Hardness and classical simulation of quantum computation
- Cloud quantum computing
- Hybrid/variational quantum algorithms
- Quantum simulation and chemistry
This course will be given in person (LTA) for weeks 1-5, and online weeks 6-8.
- Lectures will be held every Tuesday, Wednesday, and Friday 16:00-17:00 UK time (full timetable here). Recordings will appear on Panopto shortly after each lecture.
- Problem sheets will be a mix of theoretical questions and coding assignments, with the latter given as Jupyter notebooks
- Class info, including weekly deadlines is on Minerva
- Everything else (problem sheets, schedule of material, etc) is here on the course website
The course consists of:
- 24 lectures (see Lectures below)
- 5 classes (weeks 3, 4, 5, 6, 7, 8). Here are the problem sheets:
- Problem sheet 1: qsoft-sheet1.ipynb | open with Colab
- Problem sheet 2: qsoft-sheet2.pdf
- Problem sheet 3: qsoft-sheet3.pdf
- Problem sheet 4: qsoft-sheet4.pdf
- Problem sheet 5: qsoft-sheet5.ipynb | open with Colab
- The miniproject. This will have a similar format to the problem sheets, but questions will be much more in-depth and/or open-ended.
Completing Problem Sheets
Coding problem sheets are given as Jupyter notebooks. You can either either download them and do them on your own computer, or complete them in the browser using a service such as Google Colab.
If you are running on your own machine, make sure you get the latest version of PyZX by running pip install git+https://github.com/Quantomatic/pyzx
.
If you are running on Colab, click the "open with Colab" link next to the problem sheet. The first time you save, make sure you click File > Save a copy in Drive
(you will need a Google account to do this). After this, you will be working on your own copy, so you can save in the normal way.
To submit your sheet, email the .ipynb
file to your teacher. If you completed the sheet with Colab, click File > Download > Download .ipynb
to download this file for submission.
Lectures
The following is a list of topics covered in the lectures. Since this is the first iteration of the course, topics of individual lectures haven't all be finalised yet.
The lecture notes for this course are a draft of the upcoming book Picturing Quantum Software, which will be updated regularly throughout the term. It can be downloaded from Course Materials.
Handwritten lecture notes will be updated after each lecture: part 1 | part 2 | part 3 | part 4 | part 5. Some lectures have slides, which can be downloaded by clicking the links below.
The is also a collection of Jupyter notebooks covering the last 3 weeks of material. It is strongly recommended you download these and go through them yourself before starting the miniproject.
- Lecture 1, 18 Jan: Introduction to quantum software (slides)
- Lecture 2, 19 Jan: Quantum theory is SCUM
- Lecture 3, 21 Jan: Circuits and ZX-diagrams
- Lecture 4, 25 Jan: The ZX-calculus
- Lecture 5, 26 Jan: Phase-free ZX and CNOT circuits
- Lecture 6, 28 Jan: Cliffords and graph states
- Lecture 7, 1 Feb: Simplifying Clifford diagrams
- Lecture 8, 2 Feb: Strong classical simulation of Clifford circuits
- Lecture 9, 4 Feb: Clifford completeness of the ZX-calculus
- Lecture 10, 8 Feb: Pauli exponentials and Pauli gadgets
- Lecture 11, 9 Feb: Normal forms for Clifford+phase circuits
- Lecture 12, 11 Feb: Toffoli gates and phase gadget optimisations
- Lecture 13, 15 Feb: Measurement-based quantum computing
- Lecture 14, 16 Feb: Generalised flow and determinism for MBQC
- Lecture 15, 18 Feb: Circuit extraction and quantum error correction
- Lecture 16, 22 Feb: Quantum computing in the NISQ era (slides)
- Lecture 17, 23 Feb: Introduction to IBMQ/qiskit (slides)
- Lecture 18, 25 Feb: Preparing and visualising states
- Lecture 19, 1 Mar: Measurements and quantum state tomography
- Lecture 20, 2 Mar: Quantum machine learning concepts (slides)
- Lecture 21, 4 Mar: Variational quantum eigensolver
- Lecture 22, 8 Mar: Quantum approximate optimisation algorithm
- Lecture 23, 9 Mar: Applied VQC, Part 1
- Lecture 24, 11 Mar: Applied VQC, Part 2
Learning outcomes
After studying this course, students will be able to:
- Fluently represent, manipulate, and simplify quantum circuits using the ZX-calculus.
- Apply techniques for efficiently representing and synthesising quantum circuits to perform a variety of computational tasks.
- Understand key transformations done by a quantum compiler to optimise circuits and account for physical constraints of quantum hardware.
- Understand a broader class of oracle-based quantum algorithms using graphical techniques.
- Use variational quantum algorithms to solve numerical optimisation and quantum simulation problems.
- Be ready to tackle current research topics studied by the quantum group.
Prerequisites
Students are strongly encouraged to take Quantum Processes and Computation before this course. However, students may also take this course if they have had another first course in quantum computation (e.g. Quantum Information in CS Part A/B or Introduction to Quantum Information in Maths). In the latter case, students are encouraged to do some background reading on the diagrammatic approach to quantum computation, namely:
This material will be reviewed in the first week of the course, but some prior knowledge will help students to keep up.
Reading list
Lecture notes and slides (see above).
Related research
Themes | |
Activities |
Feedback
Students are formally asked for feedback at the end of the course. Students can also submit feedback at any point here. Feedback received here will go to the Head of Academic Administration, and will be dealt with confidentially when being passed on further. All feedback is welcome.
Taking our courses
This form is not to be used by students studying for a degree in the Department of Computer Science, or for Visiting Students who are registered for Computer Science courses
Other matriculated University of Oxford students who are interested in taking this, or other, courses in the Department of Computer Science, must complete this online form by 17.00 on Friday of 0th week of term in which the course is taught. Late requests, and requests sent by email, will not be considered. All requests must be approved by the relevant Computer Science departmental committee and can only be submitted using this form.