Homework 4

Deadline: see web page
The projects are assigned in your groups of 1-3 group members (except for cases justified in writing and approved by the instructor).

  1. (25 points) Select a project topic from the choices indicated by Dr. Mueller and Dr. Zhou. Coordinate with the TA to get the project assigned to you (FCFS, one group per project unless indicated otherwise). Projects may be assigned to individuals as well as groups, depending on your interests and the scope of the problem (see project description).

    Write a two page problem description and an outline with a timeline for approaching a solution (to be turned in), collect references (papers, web pointers) and create a web page to present this information. These are the deliverables for this homework due date. You should then tackle the technical part of your problem, which is due as part of the next homework assigned.

    Turn in the file project.pdf. Make sure to include the URL to your project page in it.

  2. Peer evaluation: Each group members has to submit a peer evaluation form.
  3. (30 points) Deutsch-Jozsa Algorithm

    The Deutsch-Jozsa Algorithm is used to determine whether a given function is balanced (it returns 0 for half of all inputs and 1 for the other half) or constant (it returns 0 for all inputs or 1 for all inputs). Create two different oracle functions, one which is balanced and one which is constant. These functions should be such that they have three inputs and one output. The constant function always either flips or doesn't flip the output qubit. The balanced function will need to take the input qubits into account and flip the output qubit for half of all possible inputs. Then follow these steps to test them out

    Turn in DJ.py or DJ.ipynb

  4. (40 points) Simon's Algorithm

    Simon's algorithm is used to find the hidden bitstring of a two-to-one mapping blackbox function, and inspired the famous Shor's Algorithm.

    This algorithm involves using the entangled properties of qubits. Using simon.py as a base, you are going to write a generalized function to take a bitstring and turn it into the oracle, to better understand how Simon's algorithm actually works.

    Turn in your code as simon.py or simon.ipynb


Assigned Projects

Project ID Students URL
B1 Kelvin Dsouza and Billy McCray link
B2 Carl Klier and Nachiket Patel link
B2 Anshul Jethvani and Mostafa Eghbali Zarch link
B3 Stanton Parham and Peiyi Li link
B3 Spencer Yoder link
B4 Yunsoo Ha link
B4 Alec Landow and Liam Adams link
B4 Nick Albergo and Benjamin Ryle link
M1 Alexander Allen and Keith Mellendorf link
M3 Johnathan Wilder, Ayush Khot, Ruiwen Wu link