Quantum Computing Algorithms

  • Theoritical

Mentors :

  • Pradipta Bora

  • Harshit Gupta

Mentees :

  • 4-5

The perfect project for all the quantum physics enthusiasts. The code you will create for this project could one day break RSA/ revolutionise machine learning once the real hardware catches up.

Quantum Computing is often lauded as one of the next big things that is going to change the computing landscape forever. Unfortunately it is still quite difficult to put it into practice because our physical technology has not quite caught up to it yet.

The theory of quantum computing is very rich, and in this project you will aim to study Quantum Computing (in detail), learn about quantum algorithms and attempt to create a simple centralised repository implementing difficult classical problems in a quantum programming language (Q#/Qiskit). The aim is to build a quantum random generator, break RSA (on small inputs: using Shor’s algorithm), run Grover’s Search and time permitting look at some Quantum Machine Learning.

Note that these are simulated quantum programming languages (they can run on real hardware, but we don’ t have that!) and the simulators don’t work on large inputs (can’t simulate too many qubits!). As such this is not the project that will break RSA (google it up!) and end encryption, but instead more of a proof of concept showing how (once the hardware catches up) QC will break everything. In principle, assuming Q#/Qiskit are backwards compatible, the code you will create for this project could one day break RSA/ revolutionise machine learning once the real hardware catches up.

This is not a trivial project. You will have to learn to code in one of the quantum programming languages, understand the theory, read the textbook, ask questions and do a lot more. If time permits we could make a GUI for this in the .NET framework (Q# runs on the .NET framework) and build a nice visualisation tool for the algorithms.

Reading Material: You can go through the first chapter of the book called Nielsen and Chuang (google it). This is the godbook for quantum computing. You will read around 30-40% of this book (it will take time!) Other links that may provide some idea: https://qiskit.org/learn/, https://docs.microsoft.com/en-us/azure/quantum/tutorial-qdk-explore-entanglement

Proposal: Firstly we need a good grade in PH107. This may sound counter intuitive but preference will be given to people who well know quantum physics well (of whatever that was taught to you). Please mention your grade here. In case you feel you know the material but messed up the exam, that is okay. Mention that. What we fully expect from you is that you are an expert at PH107 or can become an expert really quickly. More importantly if you know more quantum physics than say PH107, this is a big bonus. Maybe due to IPHO or some competition, doesn’t matter. If so do mention. Due to limited time people who know quantum get a big leap. Secondly, we need to know your previous programming background. Programming is going to be the easier thing to do here, but the more experience you have the better. Thirdly, a little bit of motivation.

We will do short interviews for the final selection.

Tentative Timeline :

Week Number Tasks to be Completed
Week 1-2 Read the Textbook, understand the theory. This part is non trivial, we expect you to understand the basics really well. This will require a lot of effort, the goal should be to understand the requisite quantum theory along with the Grover’s, Shor’s algorithms. Tailormade resources will be provided, along with the text books. This may require some effort during the break period as well.
Week 3 Finish up on the reading (if any left). Start basic programming on Q#/Qiskit. Some practice notebooks and problems will be provided.
Week 4 Implement some famous algorithms like Grover’s, Shor’s and any other algorithm based on the interest of mentees. Use Shor’s to break RSA. Investigate linking with GUI using .NET
Week 5 Wrap up and integrate things. If time remains, we may try to use Quantum Machine Learning to do simple classification tasks. Bonus if we can visualise it in .NET.