Learn Quantum Computing with Python and Q# 
Author: Dr. Sarah Kaiser and Dr. Chris Granade ...or not, depending on your view of the idea. The idea is fairly simple even if the implementation turns out to be next to impossible. Quantum Mechanics is a strange theory, but it is one that seems to work, and the idea of using its insights to compute things is fairly reasonable. After all, QM is the way the world works things out as it creates reality. This book is an attempt to convey the ideas of quantum computing to the average programmer with minimal math. I say minimal because getting the idea isn't really possible without math and implementing the ideas involves math, so you can't avoid it. I started off with the idea that this task, quantum computing with minimal math wasn't doable and at the end of reading the book I'm even more convinced that it isn't the way to go. Quantum computing is, as already suggested, heavy on math. If you can't handle the math then you are going to have a tough time understanding what is going on. More to the point, ideas that I have in my head that are summarized by math occupy pages of the book that avoids that math. Far from being more complex, the math makes it simpler and provides shortcuts to thinking that makes thinking about it actually possible. I have to say that my BSc degree was heavy on QM and more recently I did an advanced course on quantum computing, so I was expecting this book to be a quick read and a refresher. Far from it. I had to read, and reread several times, descriptions of things that I thought I knew in an effort to make the connection between the long descriptions and the simple math in my head. I'm sure that this is going to be the experience of many readers who lack the math in the head and are trying to see the general principles in the very wordy explanations. This is not the book's fault. If there could be a book that did the job this would be it  well written with a dash of humour, interest and passion  but I don't think it works. The first section is called Getting Started and this is a very slow and gentle intro to the basics of what quantum computing is all about  qubits, states, randomness and so on. The examples are quantum encryption, key distribution, nonlocal games and teleportation. They all sound exciting, but the reality is fairly simple once you get the idea. All of the programs in this section are in Python. Part 2 is about algorithms and it is expressed in Q#. On balance I think that the entire book would be better just using Q#, but it's a matter of opinion. A whole chapter is devoted to the DeutschJozsa algorithm which, if you understand QM, is one of the easiest of the quantum algorithms to understand. It is also the simplest such algorithm that shows an advantage over a classical algorithm. It took me a short time to understand using the math when I first encountered it, but here it took me some hours to dig thought the nonmath explanation and at the end I still don't think that you get the idea that its all based on parity. Classically parity is difficult to measure, but in QM its a natural measurement. Part 3 is called Applied Quantum Computing and I was looking forward to this because the only really deep quantum algorithms I learned back in the day were Grover's and Shor's. I was hoping to broaden my horizons. The first chapter covers quantum annealing and this was interesting because it's not a mainstream area of quantum computing but one that has many practical applications. The only problem is quantum annealing is really too close to quantum analog computing for my tastes. It is basically a universal quantum simulator that can solve many ground state problems  invaluable but not inspiring. After this I encountered two more algorithms  Grover's and Shor's. Well, yes, any book on quantum computing has to cover them, but there is nothing else. Are we really expending huge efforts on building quantum computers just to implement two algorithms? My guess is that the answer is no  we are expending huge effort to run just Shor's algorithm so that we can crack codes. This book does little to convince me that quantum computers have much more to offer, but I hope I'm wrong. My final verdict is that this is about as good a nonmathoriented introduction to quantum computing gets. Be warned, there are equations and mathematics that keep peeking through at every turn. You cannot avoid it, but you don't need much math to cope. What I would conclude, however, is that it is much easier to learn the math first and then learn the QM that is needed for quantum computing. In my opinion the math makes it easier.
To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.


Last Updated ( Wednesday, 18 May 2022 ) 