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