# Modern Quantum Computing: enhanced optimization, simulation and machine learning

Course Location: Rusky Island – University 20.35

Course Dates: 17-19 July 2018.

### Teaching Team

- Jacob Biamonte (lead)
- Tim Tlyachev
- Vito Leli

# Course Content

**Visionary Lecture.**

*Jacob Biamonte outlines the last 20 years of quantum mechanics, the second quantum revolution and notes that while progress was made we are far from tackling some foundational questions. Despite this lack of understanding, this actually does not impede the use of quantum mechanics as a computational resource. *

*18 July 2018, 21:00-23:00, building A.*

**Lecture 1.**

*Introduction to the idea of using the low-energy state of a physical system as a computational resource. Methods to program and embed problems into interacting binary systems (Ising spins). Physics fundamentally governs what types of problems we can and cannot solve and is intimately tied with the theory of information and computation. *

*17 July 2018, 9:00-13:00, room 504, building D.*

Read chapter one of *Modern Quantum Programming: Computation and the Ising Model*

Assignment 1a. (i) *Modern Quantum Programming* appendix A; (ii) warmup problems: *Modern Quantum Programming* appendix B and C

Assignment 1b. (programing)

Solutions 1a. (available after lecture)

Solutions 1b. (available after lecture)

**Lecture 2.**

*The simplest way to teach quantum mechanics might be by comparing it to statistical mechanics. We construct a theory of random processes which would be accessible using standard techniques. This theory is easy to understand and we make it look as much like quantum mechanics as we can. This provides not just a teaching tool, but a powerful lens to understand why quantum mechanics is different. We end the lecture by showing how time-evolution of a quantum system can be used to create quantum logic gates: the building blocks of a gate model quantum computer.*

*18 July 2018, 9:00-13:00, room 504, building D.*

Read chapter two of Modern Quantum Programming: Quantum vs. Stochastic Mechanics

Assignment 2a. (further problems I in *Modern Quantum Programming*)

Assignment 2b. (programing)

Solutions 2a. (available after lecture)

Solutions 2b. (available after lecture)

Quantum machine learning replaces the computationally challenging task of mimicking the process of thermalization – accelerated by quantum effects – with the actual physical process of thermalization.

**Lecture 3.**

*Modern quantum computing utilizes the family of variational quantum algorithms. Algorithms which minimize the use of the quantum processor by doing pre- and post-processing with a classical computer. They can be used to minimize objective functions for use in optimization, machine learning and quantum enhanced simulation. Here we will recall the main ingredients behind these powerful algorithms, closing the course with several examples that are close to the contemporary state-of-the-art. *

*19 July 2018, 9:00-13:00, room 504, building D.*

Assignment 3a. (further problems II in *Modern Quantum Programming*)

Assignment 3b. (programming)

Solutions 3a. (available after lecture)

Solutions 3b. (available after lecture)

## Course Book (in progress)

- Modern Quantum Programming

By Jacob Biamonte with programming examples from Tim Tlyachev

preprint (2018).

### Running the Programs

Programs are written using Python and are based on the standard and easy to use quantum simulator, QIT. Here are the instructions to install and run the course programs.

- Install Anaconda from https://www.anaconda.com/download/

With GNU/Linux or MacOS open a terminal in the same folder as the .sh file and write

bash Anaconda3-5.2.0-OS-x86_64.sh

where OS is MacOSX or Linux

On Windows double click the

Anaconda3-5.2.0-Windows-x86_64.exe

installer and follow the instructions.

During the installation use all the default settings

More informations on https://conda.io/docs/user-guide/install/index.html - Open a shell

On Windows From the Start menu, search for and open “Anaconda Prompt”

Update conda using the following command

conda update conda - Install the following python modules via pip using a shell or “Anaconda Prompt”

pip install numpy

pip install scipy

pip install networkx

pip install qit

pip install matplotlib - From the folder where you have saved the notebook files open a shell and type jupyter notebook

Open the URL with “token=” that will appear in the shell and from there open the notebook file