11
$\begingroup$

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

$\endgroup$
  • $\begingroup$ Have you checked this out? quantumcomputing.stackexchange.com/questions/1367/… $\endgroup$ – agaitaarino Apr 25 '18 at 17:00
  • 3
    $\begingroup$ Welcome to Quantum Computing SE! Currently, the title of this question makes it appear that you're asking something broad and opinion based (which is something that the SE Q&A format is not designed for), although the main body of the question makes it clear that this is actually a resource request (which is acceptable). As such, it would be most helpful if you'd edit your question title to be more specific about what you want to know. In addition, it might be useful if you included exactly what the answers to the question linked in the comments are missing, so we can better help. Thanks! $\endgroup$ – Mithrandir24601 Apr 25 '18 at 18:27
  • 1
    $\begingroup$ See in particular our policy on resource request questions. This is far too broad. $\endgroup$ – heather Apr 25 '18 at 19:27
  • 1
    $\begingroup$ Are you thinking of something like nand2tetris, but quantum? Or something like the book “Quantum Computing for Computer Scientists”? $\endgroup$ – James Wootton Apr 26 '18 at 11:33
  • 1
    $\begingroup$ Thanks to your edits, I believe this now fulfills resource request requirements, so I reopened. $\endgroup$ – heather Apr 26 '18 at 17:15
11
$\begingroup$

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.

$\endgroup$
6
$\begingroup$

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.

$\endgroup$
  • 3
    $\begingroup$ I would like to disagree with this. As soon as FORTRAN was developed (when digital computers were still quite primitive), people started using it instead of machine language, and this was probably the single greatest leap in programming languages in the history of classical computers. Why should we force people to program in machine language for quantum computers? (I'm sure they will, for efficiency, but they shouldn't be forced to.) $\endgroup$ – Peter Shor May 13 '18 at 13:46
  • 1
    $\begingroup$ Great point! I’d say that the hardware isn’t up to thinking much beyond machine language at the moment. But it would be great to be proven wrong. $\endgroup$ – James Wootton May 13 '18 at 18:36
  • $\begingroup$ I edited my answer a bit to tone down the negativity, and just point out that it isn’t the usual way of doing things at the moment (though that doesn't mean it’s wrong) $\endgroup$ – James Wootton May 13 '18 at 18:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.