During this lockdown period, like many others, I have taken the chance to take on something new. Something I never did before that could represent a nice challenge and at the same time help me in the future. But not necessary related to work today (or in a decade for that matter).
Quantum computing has always been for me this kind of thing you want to learn more about (or at least more than the occasional divulgative article here and there). But the topic is so complex that I never had enough time to dive into it properly. And time dedication is a must here, because you need many many hours to really understand what it is, its implications, how to work with it, and its future (and yes, the math behind it).
So, I have spent a few sleepless nights, weekends and mornings studying quantum computing in my free time. Then some names started to resonate, from the quintessential Turing to Feymann or Deutsch. Linear algebra came back to me like it was back in my college days (that is, badly), as well as the dreaded Fourier transform.
In this article I will explain my journey through quantum computing (that has just started), what worked for me and what didn’t in case it is useful for anyone willing to do the same.
First of all, why Quantum?
- This is the right moment. Companies are spawning everywhere, and there is funding from most major governments. Countries understand that it is the future even though we are still toddlers in the area. Now we have real business cases to solve, real hardware to test the math and the theoretical experiments.
- The same way I (more or less) understand how P-N junctions work, then digital electronics, integrated circuits, ALUs and then, low and high level programming languages, we have to understand how to build a qubit and keep it in place to operate with it. Today there are many different experiments and ways of doing it, and most certainly the quantum computer in few decades will look very different from today’s Ion trapped based QCs. Most likely I won’t work on building quamtum hardware, same as I don’t build microchips. But still those are the foundational building blocks of QC
- It feels like being in the 50’s with ENIAC. We are just playing with a handful of qubits and trying to keep them stable. We are not even grasping what we will be able to build in the next 50 years, same as the scientist doing computations with perforated cards probably didn’t even dream with the internet of things we have today.
- Differentiate the science from the bullshit. We are breaking RSA encryption! Teleportation is here! And other stuff. Knowing the fundamental theory (and maths) behind, and understanding where we really are today helps differentiating the pseudoscience bullshit from real experiments.
- My very first computer was a 16K ZX Spectrum. At a time I could program a snake game and paint a few colored lines on the TV screen in BASIC (my first programming language!). That Spectrum was a supercomputer compared with what quantum computers can do today. I always felt I arrived late to the computing revolution. I won’t miss this one!
- However there is a big difference. A lot (but not all) the software evolution we have lived in the last decades has been utilizing to the maximum the available hardware. From video streaming to high definition, calculation packed videogames, to, well…. cryptomining. It feels like software has been always behind hardware evolution, jumping around Moore’s law as we increased the complexity of our architectures, and put more layers of abstraction between the developer and the CPU.
- Today many software developers (unfortunately) don’t know how to properly manage memory, or how the cycles in the CPU work (before you jump at me, I said most! not all). On the contrary, on quantum computing we have algorithms and super useful use cases prepared where the theory and the math works. However the hardware is not there yet. Simply we don’t have quantum computers with enough error free qubits to perform the calculations. (So no breaking RSA…. yet)
- In sum, today we are still better off with our classical computers to do most (if not all) our needed calculations for our day to day. From encrypting messages, to open our preferred social media page or word document. Now, when it comes to simulate complex environments and universes (say, protein modeling, virus analysis, new forms of encrypted communication, NP complete and hard problems and so on…. QC is the way to go.
- Bridging the gap. My profile is (and I believe will always be) the same. What I do well is bridge the gap between business and technology. Trying to adapt what innovation and tech can be used the right way, with the right investment, to solve the problems of the world. Now, I will not be designing quantum hardware, or writing papers on it. I will not be a Phd on the area nor give classes to grad students, but deeply understanding where we are and how we build it will serve me get to the next level.
Ok, those are the reasons why I wanted to get into this field. Now, I don’t mean to tell anybody the way to get in. Each story is different and everybody learns in a different way. Probably if you just graduated from college you will need a completely different path. If you have been already working in electronics or similar fields, it will be different.
In my case I have to do it while I keep a full time job and take care of two kids, after spending quite some time in management and not as close to the code as I would like to (and definitely not as close to algebra!). Sometimes my brain works well enough to understand some tough concepts and sometimes I’m better off doing some dumb exercises to reinforce concepts or fiddle with vectors. Sometimes I’m trying to follow a demonstration and I have to stop in the middle because, well, I have to drink some tea with my kids and their teddy bears (true story). When I’m back at my notebook I’ve lost track of everything and have to start from the beginning. Some people might do good enough just with half of the resources, but I needed at least a couple of different ways of explaining the same thing.
So, without more dilation, this is what I have done so far?
- Coursera: Introduction to Quantum Computing – Saint Petersburg State University: https://www.coursera.org/learn/quantum-computing-algorithms/
- This is a very dense course, packed with maths, but an underlying good explanation. The exercises and tests were quite hard, and I needed to watch the lectures a couple of times. First to graps the concept, then after reviewing complementary materials to see if I really understood it. I personally liked the first lessons on the introduction, and the mathematical proof of both Grover’s and Shor’s algorithms.
- EdX Courses from Delft University: https://www.edx.org/course/hardware-of-quantum-computer | https://www.edx.org/course/architecture-algorithms-quantum-computer-internet | https://www.edx.org/course/the-quantum-internet-and-quantum-computers-how-w-2
- A bit easier to follow, although not very deep. They are meant more to be an introduction and a showcase of what is going on more than deep dives into the fabrication of the qubits. Good explanations and easier exercises. They are easier to read and a good break when you are tired of applying Quantum Fourier Transforms.
- https://quantum.country/ by Andy MatuschakandMichael Nielsen. One of the best explanations and resources I found around. Nielsen is one of the authors of “the book” that I will mention later, so he knows a thing or two. They have three essays that are perfect as an introduction, together with a nice way of understanding and memorizing the key concepts. I did this one in parallel to the other two and helped me greatly with context that was missing before. (This is probably because my base on quantum mechanics was not super good)
- Lots of youtube videos and articles. I believe studying this from home would have much much more difficult just 10 or 15 years ago. This is not “the guide for dummies on how to play guitar”. This is getting stuck in complex calculations and needing critically to understand the underlying concepts of quantum mechanics. You need people to explain concepts from different angles until you get your Eureka moment. Unfortunately Quantum Anything is not your typical chit chat topic, so socializing with it is not easy. If I have a doubt on, say how to apply Laplace’s transform, or about advanced sorting algorithms or any other college topic, I have a few friends who are way smarter than me and can help me with it (I know, people typically talk about other things, but oh well…). However believe it or not I don’t have many people around how can give me a deeper explanation about the Bloch sphere, or how truly the Hadamard gate uses quantum state superposition. (And I am lucky to be friends with very smart people, much smarter than I am!). (Correction: As it happens there is a very active Slack channel on the Qiskit community where people help each other quite nicely!)
- Quantum Computation and Quantum Information, A. Nielsen & L. Chuang (10th anniversary edition). This is “the book”. A lot of the courses out there use it as the main textbook for the topic. It is good as a reference and to reinforce knowledge.
- https://qiskit.org/textbook/ & the IBM Quantum Experience & Video collection: https://www.youtube.com/channel/UClBNq7mCMf5xm8baE_VMl3A. I recommend starting this after getting the foundational theory ready and well understood. Yes, you can go there, install your python packages and build your first quantum circuit with logic gates, measurements, entanglement, and the whole lot. You can even send it to run on a real IBMQ computer. But if you don’t really get what is going on behind a Hadamard gate, this will not be more than a simple Python kata.
- Review of Quantum Mechanics videos: https://www.youtube.com/playlist?list=PLUQUmchCCkOKQ7c-U_tUGkT9yKCg3D0bI and the essence of linear algebra: https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab. I had to stop in the middle of the courses and review those playlists. First the Algebra one when I realized I needed a remember on Hamiltonian spaces, inner products “the right way” and the rest of the operations. If you don’t have this very clear you won’t be able to follow demonstrations.
- Quantum physics from MIT OCW: https://ocw.mit.edu/courses/physics/8-04-quantum-physics-i-spring-2013/lecture-videos/ . I have only watched some of the lectures and the problems. It helped with additional context.
- Materials on Quantum Computation from MIT OCW: https://ocw.mit.edu/courses/mathematics/18-435j-quantum-computation-fall-2003/ (Prof. Peter Shor is there!)
- David Deutsch – The Fabric of the Universe and The beginning of Infinity. Complementary books, not necessary related to QC since they touch many other concepts, from computational complexity to epistemology.
In total I have ingested a lot (A LOT) of reading and video hours (between Coursera, EdX and Youtube). And this is not your typical 1.5x + subtitled Youtube videos. These are “play, stop and rewind” videos, taking notes as you go and rewatching them again when you have your “aha!” moment. And if you lose concentration for a second, you are doomed!
You go back and forth and mix content from different sources. Or stop the video and try to find online additional support to help you understand the concept. Then of course you get lost on Wikipedia pages and end up learning weird stories on von Neumann, but you are not closer to understand the Bloch Sphere 🙂
A final note. The world of Quantum Computing advances VERY fast, and some materials could get outdated. Not necessary the mathematical and physical basis, but you might find materials stating “If we ever had a 10 qubit system with more than 90% error correction we would do A, so instead we do B”. And of course that is not the case anymore.
The Qiskit textbook recommends this approach:
(https://qiskit.org/textbook/)
So this has been my path so far. Every new concept I understand, every new algorithm I deploy I become even more engaged. But as I stated in one tweet: It was a long long time ago since I felt the same rush by writing a “Hello World” program.
I’m sure there are many other ways of learning QC, but this is the one that has worked for me. If you know any other resources please let me know. I would love to connect with other people with the same interest!