Book Review: Introduction to Classical and Quantum Computing
A review of ‘Introduction to Classical and Quantum Computing’ by Thomas G. Wong.
Review: Introduction to Classical and Quantum Computing
Here’s something a bit different this week - a book review! Or at least, a loose collection of thoughts and opinions on a textbook I read recently and learned a lot from.
First, a bit of context. In September 2021, following 5 years and 2 postdoc positions in Paris, I moved to Berlin and joined the group of Prof. Jens Eisert. This is an unusually large research group, at least in my experience, with around two-thirds of the group working on quantum computing and quantum information aspects, and the remainder working on various aspects of many-body quantum physics. The group’s expertise falls across a broad spectrum, with most people having a good knowledge of both aspects, and many people active working on research in both camps. I, however, am firmly in the ‘many-body’ camp, having never taken any courses in quantum information, and so it’s been quite a learning curve getting to grips with quantum information in enough depth to understand even in vague terms what many group members are working on. Terminology that other group members take for granted is often completely alien to me, and learning the lingo while keeping up my own research activities is no mean feat.
Because of this, I’ve been looking out for good review articles and books on various aspects of quantum information, but I’ve had trouble finding a single source that covered the topics I wanted in the depth that I was looking for. I’m no stranger to the mathematics of quantum mechanics, but I was almost entirely unfamiliar with the language of quantum information. What I wanted – and still want! – is essentially “A Crash Course in Quantum Information for Many-Body Theorists” (which I’m genuinely considering writing myself), but most of what I found either treated the topic too superficially, or immediately launched into a more technical discussion than I was prepared for.
Enter Introduction to Classical and Quantum Computing by Thomas G. Wong, which I found out about via Twitter. I knew this had been launched as a free ebook, but it was only when it was launched as a paperback that it really caught me eye. Here was a book penned by an expert in the field, based on a battle-tested notes for a course he’d taught for several years, given away for free in ebook form or sold in physical form for the very reasonable price of 14 EUR. Compared to the cost of most textbooks, this is insanely cheap, and the philosophy of pricing a book to be accessible immediately stood out to me as something I wanted to support. I had a quick look at the ebook, liked what I saw, and almost immediately bought the paperback (as I knew I was unlikely to really read the ebook version).
I’ve now finished the book, one of the few textbooks I’ve ever read cover-to-cover1, and I’ve got to say I really liked it. It must be said that I’m not really the target audience - I’m a professional physicist, while the book is aimed at undergraduate level and presupposes no advanced mathematical knowledge, requiring nothing more than calculus. Every other topic is explained in a logical order in an easygoing, conversational tone that makes it all seem very approachable (although again, as I’m already very familiar with topics like linear algebra, I was able to skim these sections quite quickly - YMMV!). It’s the closest text I’ve found to what I wanted from a quantum information book, namely a self-contained, easy to digest tour of the basic processes and challenges of quantum computation, giving the reader enough that they come away with a decent understanding of what quantum computing entails, and preparing them to move on to more advanced texts.
Wong begins by explaining the essentials of classical computing with bits, i.e. the 1s and 0s inside a regular computer, and the types of operations that can be done with them. The focus is on logic gates, something I remember from high school, which are ‘black box’ objects that take one or more input bits and return one or more output bits. For example, the NOT gate is used to invert a bit from 0 to 1, or 1 to 0, while the AND gate takes two bits as input and only returns a 1 if both inputs are 1s. One thing I’d never quite realised – despite a fair bit of electronics training and a history of building and tinkering with guitar effects pedals! – is that many classical logic gates are irreversible, meaning that their output doesn’t uniquely determine what their input was. This is, as I found out, very different from quantum gates which are always reversible.
With the fundamentals established and the ideas of classical computing described in the first chapter, the bulk of the book deals with quantum computing. The concept of a qubit (quantum bit) is introduced visually in terms of the Bloch sphere, and represented in Dirac notation in a way that doesn’t require any prior knowledge of wavefunctions or other quantum mechanical phenomena. Wong takes us through the behaviour of these qubits, showing how they can be manipulated in various ways by quantum gates which all turn out to be unitary operators, the property that leads to all (perfectly implemented) quantum gates being reversible. Of course, the world isn’t perfect, and current generation quantum computers are noisy, with lots of errors that can creep in and ruin calculations. Wong presents a very nice illustration of the need for error correction by running a simple code on one of IBM’s publicly available quantum computers, and showing that the experimental result failed dismally to recover the result of a relatively simple pen-and-paper calculation.
Having previously discussed classical error correction much earlier in the book, the discussion of quantum error correction is presented in a straightforward, intuitive way that makes a lot of sense. With the need for it clearly illustrated, the book takes us through a variety of different schemes for detecting and correcting different types of errors, with full worked examples of all of the linear algebra, as well as example computer codes in several languages and illustrations of the code running on IBM’s quantum computers, available to anyone who creates an account on their website. I’ve always been a little intimidated to try running things on their website, not really understanding how the interface worked or what sort of operations were possible, so I really liked this touch. (Also, the error correction parts of this book allowed me to read and understand my Freie Universität colleague Joschka Roffe’s more advanced review article on the topic, which was an excellent next step in further developing my understanding after reading this book.)
The final part of the book dealt with quantum algorithms, which again shed some light on things I’ve heard colleagues talk about but never fully understood for myself precisely what was being discussed. I enjoyed the way this section presented different algorithms and showed how efficiently they could be implemented on both classical and quantum hardware, focusing on illustrating the types of problems where quantum mechanics could give a measurable speed-up, and culminating in a detailed look at Shor’s algorithm for for finding the prime factors of an integer, which is one of the most widely discussed examples of a situation in which quantum computers may have a real-world ‘quantum advantage’.
To sum it up, Introduction to Classical and Quantum Computing is a book which I’d happily recommend to newcomers to the field, and even as a professional physicist from a different sub-field, I learned quite a lot from it. It’s given me the grounding in the basic terminology and operations of quantum computing that I need to be able to go on to more advanced texts, such as Nielsen & Chuang which is referenced several times throughout (and which I plan to read next). While I’m still looking for the perfect review article “A Crash Course in Quantum Information for Many-Body Theorists”, this book is the closest thing I’ve found yet to what I’m looking for2 and is an accessible, easy-to-read introduction to classical and quantum computing. Given the low barrier to acquiring this book (free as an ebook, very reasonable as a paperback), I would definitely recommend this for anyone curious about quantum computing who may or may not not have any prior knowledge, but isn’t afraid of a little bit of maths.
This was largely possible because I knew most of the maths already, but I read the book over the course of a few evenings. The only other textbook I’ve read cover-to-cover was the comparatively svelte but equally brilliant “Statistical Mechanics: A Survival Guide” by Glazer & Wark. ↩︎
It would be absolutely unreasonable of me to complain that the book is too simple, given its intended audience, but what I’m personally still looking for in a review article is something starting from a more advanced understanding of many-body physics, without necessarily any prior understanding of quantum information. I may well be the only person in the world who wants this – if I’m not, please let me know, as knowing there’s some interest in this would really encourage me to write it! ↩︎