# PHY 299-02 Syllabus

Introduction to Quantum Computing and Information

Course Introduction

This course is a 16 week introduction to quantum computing with applications in business, finance, communications, science, and engineering. There is no expected background for this course but prior experience with linear algebra, quantum mechanics, and Python programming will make the first weeks of the course easier. This course will consist of 12 weeks of lectures introducing the main concepts in quantum computing as well as cutting edge applications to machine learning, finance, and science. Quantum computing codes will be run on both simulated quantum computers and real quantum computers. The remaining 4 weeks of this course are devoted to creating and presenting a final project on a topic of your choice. Homeworks will be given weekly during the first 12 weeks of the course and the final project will make up the other half of the course's grade.

Learning Goals

Be able to define the term quantum computing and explain the differences between a quantum computer and a classical computer

Be able to understand the physics, mathematics, and programming background necessary to learn quantum computing

Be able to explain the basic principles behind quantum computers including qubits, superposition, measurement, and entanglement

Be able to use a variety of quantum gates to construct quantum circuits

Be able to explain and implement basic quantum algorithms including quantum parallelism, Deutch-Jozsa algorithm, and Grover's search algorithm

Be able to explain how quantum computers can be used for communication and cryptography and be able to implement a quantum teleport protocol

Be able to explain and implement the variational quantum eigensolver to find eigenvalues and to find the ground state energy of a quantum system

Be able to explain how hybrid classical-quantum algorithm are implemented and in what types of problems they are useful

Be able to explain how quantum computer hardware works and its scalability

Be able to explain the sources of quantum error and noise and how they can be corrected

Be able to explain how quantum computers can be used for machine learning, finance, and science

Textbooks and Other Resources

WARNING: IBM has recently updated their interfaces and the Qiskit library so many "older" resources you find online (i.e. older than a year) likely have out-of-date syntax. You can still use any ideas you get from those sources, but you will have to update the code.

Quantum Computing for Programmers by Robert Hundt

Quantum Computing and Quantum Information by Issac Chaung and Michael Nielsen

Q is for Quantum by Terry Rudolph

Available for free in three PDF files

Python 3 programming language, Jupyter notebooks, and the libraries numpy, scipy, matplotlib, and qiskit. Many of the Python programs used in this course can also be run on the cloud using Google Colab.

Grading

40% of the final grade will come from coding homework. There are 12 homeworks in total and the lowest two scores will be dropped

40% of the final grade will come from conceptual homework. There are 12 homeworks in total and the lowest two scores will be dropped

20% of the final grade will come from your participation in the course. This is made up of your attendance and active participation in the lectures, seeking timely help when issues and misunderstandings arise (both over email and during office hours), and being a good group member.

Final Project Guidelines

This course will culminate in a final project where you will complete one of the projects listed in the next section and report your results and findings both in a written report (due the last day of the course) and in a 10 minute presentation (to take place during the last week of the course).

Final Project Topics

Create a quantum version of a simple classic game such as tic-tac-toe

Calculate the ground state energy of simple molecular or nuclear systems using the variational quantum eigensolver and compare to the energies found with classical methods and/or analytical solutions

Simulate a quantum key distribution for quantum cryptography

Develop a simple quantum neural network and compare its performance to a classical neural network on simple data sets

Develop a quantum random number generator and compare to classical random number generators

Experiment with various ways to optimize quantum circuits

Explore the quantum Fourier transform algorithm and its applications (ex: Shor's algorithm and large number factorization)

Implement a hybrid classical-quantum optimization algorithm and compare to a purely classical implementation of the same algorithm

Lectures

Week 1

Monday: What are quantum computers? How do quantum computers compare to classical computers?

Wednesday: Linear Algebra Overview; Using Python and Numpy for Linear Algebra

Friday: Quantum Mechanics Crash Course Part 1 (Probability, Superposition, Quantum States, Hamiltonians, Bra-Ket Notation)

Week 2

Monday: No Class

Wednesday: Quantum Mechanics Crash Course Part 2 (Pauli Matrices and Other Operators, Variational Principle)

Friday: Solving Quantum Mechanics Problems in Python

Week 3

Monday: Qubits, Superposition, and Introduction to Qiskit

Wednesday: Quantum Measurement and Wavefunction Collapse

Friday: Quantum Entanglement

Week 4

Monday: Quantum Gates

Wednesday: Quantum Gates

Friday: Quantum Circuits

Week 5

Monday: Quantum Circuits

Wednesday: Quantum Circuits

Friday: Quantum Parallelism

Week 6

Monday: Quantum Parallelism

Wednesday: Deutsch-Jozsa Algorithm

Friday: Deutsch-Jozsa Algorithm

Week 7

Monday: Grover's Search Algorithm

Wednesday: Grover's Search Algorithm

Friday: Quantum Key Distribution

Week 8

Monday: Quantum Teleportation

Wednesday: Quantum Cryptography

Friday: No Class

Week 9

Monday: Quantum Simulations of Physical Systems

Wednesday: Variational Quantum Eigensolver (VQE)

Friday: Variational Quantum Eigensolver (VQE)

Week 10

Monday: Variational Quantum Eigensolver (VQE)

Wednesday: Hybrid Quantum-Classical Algorithms

Friday: Hybrid Quantum-Classical Algorithms

Week 11

Monday: Quantum Errors and Noise

Wednesday: Quantum Error Correction

Friday: Quantum Error Correction; Introduction to Final Projects

Week 12

Monday: Quantum Hardware

Wednesday: Quantum Hardware

Friday: Scalability of Quantum Computers

Week 13

Monday: An Overview of Quantum Machine Learning

Wednesday: An Overview of Quantum Computing for Finance

Friday: An Overview of Quantum Computing for Science and Engineering

Week 14

Monday: Using Real Quantum Computers

Wednesday: Using Real Quantum Computers

Friday: Work on Final Projects in Class

Week 15

Monday: Work on Final Projects in Class

Wednesday: Work on Final Projects in Class

Friday: Work on Final Projects in Class

Week 16

Monday: Presentations on Final Projects

Wednesday: Presentations on Final Projects

Friday: No Class

Homeworks (Assigned on Monday, Due the Following Wednesday)

Week 1: Linear Algebra and Quantum Mechanics Crash Course

Week 2: Quantum Mechanics with Python

Week 3: Simulating Qubits, Superposition, Entanglement, and Measurement with Qiskit

Week 4: Simulating Quantum Gates and Circuits; Creating a Bell State and Demonstrating Entanglement

Week 5: Simulating More Complicated Quantum Circuits

Week 6: Implementing and Testing Deutsch-Jozsa Algorithm

Week 7: Implementing Grover's Search Algorithm and Comparing to Classical Search Algorithms

Week 8: Implementing a Quantum Teleport Protocol

Week 9: Solving the Lipkin Model with the Variational Quantum Eigensolver

Week 10: Solving the Lipkin Model with the Variational Quantum Eigensolver (Continued)

Week 11: Simulating Error Propagation and Error Correction in a Noisy Quantum Circuit

Week 12: Performing Calculations on Real Quantum Computers

Week 13: Work on Final Projects

Week 14: Work on Final Projects

Week 15: Work on Final Projects