CMSC 657 Introduction to Quantum Information Processing, Fall 2018 : Homework

Not-for-credit assignment

Written Assignments

Coding Assignment

  • In this assignment, we hope to get you familiar with existing quantum programming languages, public available quantum machines, and simulators. It would be a valuable experience if you are more interested in the theoretical perspective of quantum information.

  • To complete the assignment, please select two existing quantum programming languages and learn how to code using them. We provide some suggestions at the end of the description. However, please feel free to try something outside the suggested list. The assignment is divided into two parts:

    • Part 1 (3%) due on 11/05/18. Please make your choice of two languages and implement the teleportation protocol (as shown in the lecture) using both languages. You should submit: your codes and a brief explanation of your choice.

    • Part 2 (7%) due on 12/02/18. Please implement further a quantum algorithm of your choice (either from lectures or from research papers) using both languages. You should submit: your codes and a report (no more than 2 pages) describing the algorithm itself and your implementation, especially the comparison between the two languages.

  • Tips:

    • Please make sure your submitted codes are readable and have been tested. Sloppy codes could lose your points.

    • For Part 2, please be cautious about your choice. Simple algorithms in theory could be hard to implement. However, we will give bonus points if you manage to implement reasonably complicated algorithms.

    • Note that you can use existing libraries of quantum algorithms for reference. However, you need to write your own code.

  • Suggested list of quantum programming languages:

    • Microsoft Q#. Imperative language based on the Dot-net framework Visual Studio (for Windows) and VSCode (for Mac and Linux) are the recommended development environments. A Python interface based on Anaconda is available. Allows simulation of large quantum circuits. A learning tool at your own pace is available at Q# Katas.

    • IBM Qiskit. A Python Wrapper for the API can be downloaded as a package. Sample Jupyter Notebooks with code samples are available as part of the package. Allows for small programs to be run on IBM's quantum processor Q-Experience.

    • Rigetti Forrest.

    • Google Cirq.

    • ScaffCC.

    • Quipper Functional language based on Haskell. Several implemented quantum algorithms, as well as papers describing the language and its design principles can be found on the website. (functional programming knowledge required).

    • Feel free to explore outside the list!

Latex Template

Please use provided source tex files for latex typesetting of your solutions. There is also a latex macro for some basic notations in quantum information. Check here for a sample tex file.

Please use Qcircuit for drawing quantum circuits.