CMSC 657 Introduction to Quantum Information Processing, Fall 2019 : 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 any one 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 consists of two problems. For any problem, there will be a problem description and a provided set of test cases. Your solution will be graded using a different test cases. The coding assignment is due on 11/26/19.

  • Tips:

    • Please make sure your submitted codes are readable and have been tested. It is important to provide instructions to make sure your codes can compile and execute on the test cases. Failure to compile or execute could lead to 0 score.

    • Note that you can use existing libraries of quantum algorithms for reference.

  • 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.