This is a course at the University of Basel, given by James Wootton of IBM Research.
Regarding the current health situation, keep track of the university and cantonal guidelines. Lectures will be distributed online until further notice. Information will be sent by email.
The course begins on 19th Feb 2020 and will have weekly lectures and exercises.
Quantum information theory is the basis of multiple emerging technologies, such as quantum computation and quantum crypotography. It allows us to understand how quantum effects in physical systems may be harnessed for new forms of information processing. The course will also feature some hands on experience with quantum technology, via the open-source Qiskit framework for quantum computing;
The course will be based on the Qiskit textbook. Mostly we'll be working out of a fork of this textbook, taken at the start of the course.
-
Lecture 1: Based on The atoms of computation and The unique properties of qubits.
-
Lecture 2: This is not a course on Python and Qiskit, though we will be using them. So in this lecture we'll review Python and Jupyter Notebooks and Qiskit. You'll need to run these notebooks. See the information in 'Exercises' for more information on this.
-
Lecture 3: Based on Writing Down Qubit States and Pauli Matrices and the Bloch Sphere.
-
Lecture 4: Based on States for Many Qubits, Quantum Gates and Fun with Matrices.
-
Lecture 5: Based on Standard Gate Set and Proving Universality.
-
Lecture 6: Based on Basic Circuit Identities.
-
Lecture 7: Based on Superdense Coding and Quantum Teleportation.
-
Lecture 8: Based on Classical Computation on a Quantum Computer and Bernstein-Vazirani Algorithm.
-
Lecture 9: Based on Grover's Algorithm and Measurement Error Mitigation.
-
Lecture 10: Based on Introduction to Quantum Error Correction via the Repetition Code and these slides.
-
Lecture 11: Based on Quantum Procedural Generation and A quantum procedure for map generation.
-
Lecture 12: Based on Hybrid quantum-classical Neural Networks with PyTorch and Qiskit, which is explained in this video.
Some exercises will be in the form of Jupyter notebooks. These can be run locally by installing Python 3, Jupyter and Qiskit. They can also be run online without any installation using the IBM Quantum Experience. For this, just use the 'import' function.
The easiest way to to download the exercises is to download the whole repository using this link.
-
Exercise 1 Work through this notebook. Note that this file needs to be located in the same directory. If using the IBM Quantum Experience, simply upload both. Hand in the completed notebook by email.
-
Exercise 2 Use quantum gates to make classical logic gates in this notebook.
-
Exercise 3 Try out your linear algebra.
-
Exercise 4 Get to know your Paulis.
-
Exercise 5 Using Clifford gates.
-
Exercise 6 Simulate a simple Hamiltonian.
-
Exercise 7 Beam a qubit up, Scotty!.
-
Exercise 8 Clean up your garbage.
-
Exercise 9 Implement Grover's algorithm.
This won't be graded (unless you decide to do it for the final project), but you may still find it useful.
- Python and Qiskit on PewPews Using a PewPew you can experiment with Python and Qiskit in a simple and fun environment. You can even try making a game! See the guide here to get started. You can either use a physical PewPew (handed out in lecture), or an emulator.
Instead of the exam (and the final few exercises) we will have a Final Project.
The main aim of this is for you to demonstrate understanding of the topics in the course. The format is fairly free to allow you to do this in a way that suits you best. Collaboration will be fine. But everyone needs something unique to submit.
Below are the different kinds of project you can choose from. Examples of existing work are given to give you and idea of what you can produce.
The deadline is essentially Friday 29th May, so ask all your last minute questions before then. However, you can keep working and submitting until Wed 3rd June.
Ideally you should submit it here, in this folder. For this you'll need to make your own fork (using the button to the top right), and then make a pull request. If that seems too complicated, send by email.
You can write about one of the topics covered in the lectures, or about something that wasn't covered. You can include relevant example code in Qiskit, or you can avoid the programming and just have text and images
- Qiskit Textbook section on Phase Kickback.
- Qiskit Textbook section on Berstein-Vazirani.
- An attempt at a popular science article on quantum non-locality.
Throughout the history of computing, people have been making simple games to help understand the new technology. Now we can do the same thing with quantum computing. I wrote a whole article on this idea, which you can find here.
Basically, reasons why we might make a quantum game are:
- To provide a simple and accessible example of a quantum program in action.
- To educate people about quantum computing.
- To start looking for ways in which quantum computing might actually be useful for games.
To make a game, you typically use a game engine. But getting game engines to work with Qiskit can be tricky! I've put some tools together to help you with this, which you can find here. You can also use the PewPews!
Remember: don't just use quantum for a random number generator!
- Hello Qiskit: a game that teaches quantum computing.
- Quantum Awesomeness: a game that gives insight into real devices (and featured in the NZZ).
- QPong: A game that implements the core game mechanic with a (simulation of).
- Q Avrai: using quantum computing for map generation.
- See also the games from the recent IndiQ Game Jam.
You can access real quantum hardware at the IBM Quantum Experience and Quantum Inspire. But how well do they actually work? Many people have run various different types of quantum circuit and analyzed the results to give some insight into this.
You can come up with your own method for benchmarking, or reproduce something that has already been done on a different device. The easiest way is to implement repetition codes using Qiskit's topological_codes
module. But since this package (hopefully) makes it easy, you'll need to try out more than just a single code on a single device
- Quantum Awesomeness: a game that gives insight into real devices (and featured in the NZZ).
- Decoherence of entangled states: A paper looking at decoherence in GHZ states.
- Repetition Codes: using Qiskit's
topological_codes
module to test a device.