I'm an experienced software engineer (+15 years dev experience, MsC in Computer Science) and quantum computing is the first thing in my experience that is being hard to grasp/understand. I'd love to fix that ;)
What resources would you recommend to start learning about quantum computing?
Ideally resources that touch both the theoretical base and evolve to more practical usages.
- Nielsen and Chuang, Quantum computation and information: mmrc.amss.cas.cn/tlb/201702/W020170224608149940643.pdf
While you are reading and solving the above book, I strongly recommend reading:
- "Quantum computing since Democritus" by Scott Aaronson, one of the researchers on quantum computation: https://www.scottaaronson.com/democritus/
This book will give you a "flavour" of where the power of quantum computation might be coming from, and the whole host of theoretical issues that surround this domain.
What I _highly_ recommend is practicing problem-solving using these resources:
(1) Microsoft quantum katas: https://github.com/microsoft/QuantumKatas
(2) Codeforces Q# coding contest: https://codeforces.com/msqs2018
Actually programming the circuits in Q# will give you a sense of stuff that's swept under the rug when reading textbooks: initialization of qubit states, a good sense of what "qubits cannot be copied" means, etc.
At this point, one ought to have an understand of quantum computation and our current understanding of its power (in particular, the relationship that we don't know how to separate BPP and BQP), how to implement the "common" quantum algorithms in a programming language, and a vivid sense of the "quantumness" of these algorithms.
For reference, I speak from experience: (1) My solutions to the quantum katas: https://github.com/bollu/quantum-course-exercises. (2) My scattered QC notes: https://github.com/bollu/notes/blob/master/quantum-computati...
(One can find a full pdf of quantum computing since Democritus relatively easily on the internet if one so chooses.)
We've recently added an IDE [2], we've got tutorials [3] and YouTube videos [4] to guide you through the learning process. Additionally, we've recently released a hybrid solver service [5], which supports up to 10k fully-connected variables.
* The Leap service is available in 37 countries. We just launched in India and Australia this week.
[1] https://www.dwavesys.com/take-leap
[2] https://support.dwavesys.com/hc/en-us/sections/360007452933-...
[3] https://www.dwavesys.com/resources/tutorials
[4] https://www.youtube.com/channel/UC6_etbfDnWMxAuYj9qD1qmA
[5] https://www.dwavesys.com/sites/default/files/14-1039A-A_D-Wa...
There are two reasons I like it.
There is no mumbo jumbo about polarising filters and "look how mysterious" it is. No. They concentrate on very simple linear algebra and work with it.
Second, they make a convincing argument that when you memorise a bit of material, it makes it intuitive. So they incorporate spaced repetition to continually test you (by email) so that the material gets into your long-term memory.
But for me what really helped was Quantum Computing Without the Physics by Nannicini. Aaronson is not formal enough or really a textbook to teach and explain quantum algos like Simons (a good first algo) or Grover. It is an amazingly fun book though.
https://arxiv.org/abs/1708.03684
Nielsen and Chuang is the standard textbook but was not useful to me sadly. I wouldn’t recommend it to a beginner outside the framework of a course.
[0] https://qiskit.org/learn/ [1] https://unitary.fund/posts/high_school_resources.html [2] https://quantum.country/ [3] http://qworld.lu.lv/
I truly believe anyone is capable of grasping QC. Minimal physics required. Math no higher than linear algebra. Q# Quantum Katas are ideal for beginners. Mariia Mykhailova is a terrific instructor. And you can scale up to arbitrary numbers of (simulated) Qubits on Azure Quantum when you are ready to solve real world optimizations / simulations ;)
Just want to link up another resource currently ongoing: Qiskit Global Summer School. Currently 2000+ students enrolled and materials are identical to bootcamp given to IBM Quantum Interns
https://qiskit.org/events/summer-school/
Best of Luck ;)
We have compiled learning resources [2], organize workshops and hackathons (i.e. we are behind the Quantum track at FOSDEM [3]) and even offer mentorships [4] for people that have some QC knowledge and are interested in entering the field of quantum SW development.
Originally the effort started as surveying the current state of open source software in QC [1], but shortly afterwards we realized that the field could benefit (similar as AI has), among other things, from more people with SWE background joining and helping the ecosystem grow, making the individual pieces of the QC stack more robust and interoperable, but also completely building parts that are currently missing.
In that spirit, more recently we are trying to organize efforts to help the open source quantum ecosystem by building various projects where people with good SWE background could be very helpful.
Write me a short info about you at `tomas at qosf.org` with "[HN]" prefix if interested to volunteer some of your time!
We're hoping to add couple of people into the team, and looking for people with a different backgrounds (Python is the language of the science world in QC, but we have use for everything ranging from devops, frontend to backend skillsets).
[0] https://qosf.org
[1] https://journals.plos.org/plosone/article?id=10.1371/journal...
[2] https://qosf.org/learn_quantum/
[3] https://fosdem.org/2020/schedule/track/quantum_computing/
[1] https://ocw.mit.edu/courses/physics/8-04-quantum-physics-i-s...
[2] https://ocw.mit.edu/courses/physics/8-04-quantum-physics-i-s...
[3] https://ocw.mit.edu/courses/physics/8-05-quantum-physics-ii-...
[4] https://ocw.mit.edu/courses/physics/8-06-quantum-physics-iii...
I like her because she writes code for a living AND has worked at quantum computing startups, and went to postgrad for quantum, so she can go really deep on both areas and their intersection.
She's also on Twitter https://twitter.com/amarchenkova
His quote: "90% of the understanding of the quantum circuit model is achieved by reviewing three purely 'classical' topics: classical Boolean circuits; reversible classical circuits; and randomized computation"
Then, you should probably take a class in the basics of quantum physics which will lay the foundation for you to understand quantum computing.
https://www.oreilly.com/library/view/programming-quantum-com...
What types of problems are quantum computers anticipated to solve? I've only heard about how they are able to break certain cryptographical algorithms that were designed long before quantum was even a thought.
Quantum Computing for Computer Scientists by Noson S. Yanofsky and Mirco A. Mannucci
https://www.cambridge.org/core/books/quantum-computing-for-c...
They use spaced repetition to help you interiorize the concepts and give a good theorical basis to understand what quantum computing is about.
https://github.com/Developer-Y/cs-video-courses#quantum-comp...
What better than learn from Shor and Chuang?
How I learned:
I started out like you, in possession of an undergraduate education in computer science. I began reading Quantum Computer Science: An Introduction[0] by N. David Mermin. This is a very good textbook, but I absolutely could not skim it. I had to ensure I understood every single line before moving onto the next. I had the impression I wasn't learning very quickly, when in fact (due to the textbook's density) I was taking in a huge amount of information.
After a few weeks with the Mermin textbook, I bought Quantum Computing for Computer Scientists[1] by Yanofsky & Mannucci. This is a much softer introduction than Mermin, almost too soft: I skipped the first few chapters on linear algebra and complex numbers. However, in combination with the Mermin textbook, I acquired a good understanding of quantum computing basics. It was at this point I reached my own personal threshold for feeling I "understood" quantum computing.
People often recommend Quantum Computation and Quantum Information by Nielsen & Chuang (also called "Mike & Ike") for beginners. I believe this is not good advice. Had I tried to learn from that textbook, I would have failed. However, it is an excellent textbook after you already understand the basics. Anecdotally, I knew two people who tried to learn quantum computing at the same time as me: one used Mike & Ike, and the other used a book called Quantum Computing: A Gentle Introduction. Neither of those people understand quantum computing today.
How I wish I had learned:
My experience learning quantum computing required a huge amount of mental effort, and in the end what I learned wasn't actually complicated! So, I created a lecture called Quantum Computing for Computer Scientists[2] which is the lecture I wish I'd had access to before trying to read any textbooks. The lecture is popular and well-received, and I think it covers all the stuff that's really conceptually tricky; once you're over those conceptual hurdles, you can apply your regular computer science skills to learn everything else about quantum computing you need (how specific algorithms work, etc.) Thus my "hindsight" study guide is as follows:
1. Watch the lecture I created.
2. Watch Professor Umesh Vazirani's lectures on quantum computing; they flesh out my lecture and he is a tremendously effective explainer of concepts (these are scattered around YouTube but you can find a full playlist at [3])
3. Concurrently, work through the first few chapters of either the Mermin or Yanofsky textbooks
4. After you feel you understand the quantum computing basics, pick topics which interest you from the Nielsen & Chuang textbook
5. Stick around quantumcomputing.stackexchange, reading questions & answers, asking your own, and maybe eventually answering your own!
Good luck!
P.S. I've also heard good things about the Quantum Katas: https://docs.microsoft.com/en-us/quantum/tutorials/intro-to-...
[0] https://www.amazon.com/Quantum-Computer-Science-David-Mermin...
[1] https://www.amazon.com/Quantum-Computing-Computer-Scientists...
[2] https://youtu.be/F_Riqjdh2oM + slides https://speakerdeck.com/ahelwer/quantum-computing-for-comput...
[3] https://www.youtube.com/playlist?list=PLDAjb_zu5aoFazE31_8yT...
I personally have a similar background to you, with ~15 years of software engineering.
I second some of the comments: I really started understanding quantum computing much better when I sat down and worked through the problems of the Nielsen and Chuang book ("Mike & Ike") - the first 4 chapters should give you a solid start. It starts from theoretical base and does cover some of the applications of QCs as well, though from that perspective there are a bunch of newer results that are not represented in it yet (e.g. QAOA/VQE, NISQ era algorithms, etc.). Some basic linear algebra is definitely needed though, it takes effort and practice to build up familiarity there if you are rusty on it (I was).
Also, I would like to plug open source contribution as a vehicle / forcing function for learning. I started contributing to Cirq (https://github.com/quantumlib/Cirq) starting last year in my free time (as well as some of my work time at Google) and I learned a ton through that. I now work on Cirq full time. OpenFermion, qsim, Tensorflow Quantum are all projects that are excited to have new contributors.
The reason I mention my journey because it shows that you don't need formal training in quantum physics to become productive in the quantum computing community (it can definitely help though). However, the field is very deep and is moving very fast, I very much consider myself a noob and rely heavily on the expertise of others for contributions, and I spend a lot of time reading and learning still every day - including other chapters of Mike & Ike, Preskill's notes (http://www.theory.caltech.edu/people/preskill/ph229/), papers and online tutorials from other platforms that can help shed light on a particular topic.
Also, don't forget to check out https://algassert.com/quirk - a very useful in-browser quantum circuit simulator written by Craig Gidney, who also was one of the main creators of Cirq. Even more inspiringly, he also, with very hard work, grew from a software engineer into a quantum researcher without formal training. His words: "My learning was heavily based on explaining things to the computer and then having the computer show me the consequences of what I explained." - he also recommends this playlist: https://www.youtube.com/playlist?list=PL1826E60FD05B44E4.
Hope this helps!
# QC Main Ideas
- Rotate, Compute, Rotate
- Think in Amplitude Interference
# Beginner: -(Hi-Recc) Quantum Computing Primer (1.5hr) : https://www.youtube.com/watch?v=F_Riqjdh2oM
-(Hi-Recc) Math Primer for Quantum Computing (easiest intro/primer I found on the topic; Highly Recommend ) : https://cds.cern.ch/record/1522001/files/978-1-4614-6336-8_BookBackMatter.pdf
-- understand Bra Ket notation [] (Ket as Column vector, Bra (Row vector) as Complex Conjugate of Ket (denoted as dagger) )
-- understand Kronecker product ( for multi-qubit systems)
- Quantum Computing for Computer Scientists book - https://www.amazon.com/Quantum-Computing-Computer-Scientists-Yanofsky/dp/0521879965
- Quantum Math Primer (Faculty of Khan) (found a bit hard the first time around, pretty dense) : https://www.youtube.com/playlist?list=PLdgVBOaXkb9AtG88OsK_c8FDEBDLCC6_9
# Intermediate -(Recc) Ryan O'Donnell CMU course [is the best if you want to really understand the capabilities of quantum computing, get practice with math, intuition] (algos connection to Fourier, Quantum Complexity Theory, Math best practices, learning multi-quibit systems)
-- Quantum Computation and Information at CMU : https://www.youtube.com/playlist?list=PLm3J0oaFux3YL5qLskC6xQ24JpMwOAeJz
-- Lecture Notes (use as reference in case video is not clear, or camera shot lags/changes) https://www.cs.cmu.edu/~odonnell/quantum18/
- Mermin's Textbook https://www.goodreads.com/book/show/1959623.Quantum_Computer_Science
- Nielsen & Chuang's Textbook https://www.amazon.com/Quantum-Computation-Information-10th-Anniversary/dp/1107002176
-- Nielsen's Lectures https://www.youtube.com/playlist?list=PL1826E60FD05B44E4
# Advanced -(Recc) Scott Aaronson Graduate Course http://stellar.mit.edu/S/course/6/fa14/6.845/materials.html
-(Recc) Scott Aaronson Papers (really interesting) https://scottaaronson.com/papers/
- Complexity Zoo - List of Algorithms https://complexityzoo.uwaterloo.ca/Complexity_Zoo
-(Recc) Machine Learning https://www.amazon.com/Quantum-Machine-Learning-Computing-Mining/dp/0128100400
# Reference: -(Recc) https://qiskit.org/textbook/preface.html ToC for different algorithms ( easy to follow, do it for quick basic algo math implementation lookup)
- 'Suggested texts, notes, and videos to look at' section at bottom of page https://www.cs.cmu.edu/~odonnell/quantum18/
( I found this skill level format useful when learning Haskell/Functional Programming Paradigm. This is what I found useful for getting started with minimal friction; if more of a textbook learner Nielsen/Chuang textbook or Quantum Computing for Computer Scientist's)
https://www.amazon.com/Programming-Quantum-Computers-Essenti...
Shameless plug dealt with, the text I'd next point you to for being grounded more in the Real world rather than Hilbert space is Mermin's. Modulo his insistence on using the term QBit rather than qubit, it's a great pedagogical work by someone with a very deep understanding of quantum mechanics. It's also in hardcover, which also helps lend it more weight:
https://www.amazon.com/Quantum-Computer-Science-David-Mermin...
As others have recommended, anything by Scott Aaronson is gold. Computational complexity is his passion, and although I think his work is very thorough and accessible, I would suggest it's a little less hands-on. However for very, very deep insights there's nowhere better to go. Alongside his book, Aaronson's blog at https://www.scottaaronson.com/blog/ is also revered by both QC enthusiasts and professionals alike and a great place to follow debate on the latest developments in the field.
The most mathematically demanding text (or most thorough, depending on how you look at it) I'd consider is Nielsen and Chuang (a.k.a "Mike 'n' Ike", a.k.a "The bible"). It's slightly out of date in some more recent concepts regarding the implementation of quantum computing (not wrong, just a tad incomplete), but is still solid and indispensable for the core concepts and insights behind quantum computing.
If you're interested in the physical implementation of a quantum computer (i.e. what does it _look_ like inside), then Mike 'n' Ike is the only one that will come close to satisfying you. The real world is so damn messy, and quantum hardware is no exception. QC tech moves fast and the money is still on the table as to just what that tech might look like inside the million qubit quantum computer of the future. Mike 'n' Ike does discuss some specific types of qubits, but I'm not aware of a book providing a truly comprehensive and up to date description of today's most promising approaches.
https://metacpan.org/pod/Quantum::Superpositions
(The original author, Damian Conway, is a university CS professor.)