15

I am from a computer science background and I find it difficult to decide on the resources I should focus on while learning quantum computing, since there is so much to read/watch. My ultimate goal is to make a programming language acting as an interface between quantum computers and the person similar to 1972 when C was made. As a realistic intermediate stage, I would like to get to the point of writing programs on IBM's QISKit.

For that, I would need a schematic study guide in order to acquire the necessary background in Physics and the related fields required to dive into the field of quantum computing. Does this already exist: an ordered list of indispensable concepts and abilities to master, which if possible also mentions adequate material to acquire each of them?

Assume a high school level physics knowledge. Provide a study guide i.e. from beginner to expert kind of guide. Try to list video/book resources that one should follow in a chronological order so as to become an expert in the field of quantum computing to the level I can write my own quantum computing language (assuming already have other CS skills to write the language).

Sanchayan Dutta
  • 17,945
  • 8
  • 50
  • 112
Kushajveer
  • 181
  • 7

2 Answers2

12

I don't think there is a single golden resource which can you provide you all the necessary knowledge. But I could suggest a pathway (or schematic study guide in your words):

If your aim is to create a new quantum programming language I'd rather say you should thoroughly learn an existing quantum programming language first along with the basic concepts of quantum computing, both from the physics side and the computer science side (maybe even the Mathematics side!).

  • Microsoft has their quantum programming language named Q# (which is a part of their Quantum Development Kit). The complete documentation-cum-guide is on their website: https://docs.microsoft.com/en-us/quantum. If you are from the CS side, I hope you already have some knowledge of vectors, matrices and linear algebra in general. If so, you can directly start reading the guide article-by-article. Initially, they start with a brief revision of matrices, vectors, etc. followed by a brief introduction to qubits. That much is sufficient for at least getting started with writing a basic quantum program, with minimal understanding of the physics behind it. By the way, if your linear algebra concepts are weak, you could always try Khan Academy's lectures on the same.

  • Next, you'd want to learn at least some basics of quantum mechanics. I personally love Professor Vazirani's lectures, which are now on Youtube. In about 60 ten minute lectures he covers all the necessary basics of quantum mechanics and quantum computation algorithms. After this, you'd be in good shape to pick up new algorithms on your own.

  • As a third step, I'd suggest picking up "Quantum Computation and Quantum Information by Isaac Chuang and Michael Nielsen" and also "Quantum Computing for Computer Scientists by Mirco A. Mannucci and Noson S. Yanofsky" for covering the important topics which you missed out.

That should be enough for you to get a solid grounding to start writing your own quantum programming language. You may also look into tutorials for the other common quantum computing languages to get an idea of how to write quantum programs and design quantum programming languages.

Sanchayan Dutta
  • 17,945
  • 8
  • 50
  • 112
6

I’d suggest you reflect upon whether goal of "making a new quantum programming language" is suitable at this point in the development of quantum computation. It is not the most common approach, since mostly we are still at the stage of thinking in terms of what is essentially machine language. When we create algorithms, the level at which this is done is similar to expressing classical algorithms in terms of logic gates (such as this example for multiplication). The quantum SDKs, like QISKit are essentially ways of creating jobs to be sent to quantum hardware or simulators. This includes tools for performing simulations, optimizing for run time or noise levels, etc. They aren't really languages in the high-level sense we are used to for classical computation.

For an introduction to what is going on at this level of the quantum stack, Q is for Quantum by Terry Rudolph might be helpful.

For your intermediate goal of writing programs with QISKit, I'd recommend the QISKit tutorial. It has many worked examples of implementing short quantum programs. There is also a QISKit publication on Medium in which some of the things in the tutorial are explained in more detail. There is also a gamified tutorial to QISKit, which might be useful as a warm-up for the full QISKit tutorial.

Full dislosure: I have contributed to all the things mentioned in the final paragraph.

James Wootton
  • 11,700
  • 1
  • 35
  • 74