For many years after the dawn of computing machines, it seemed to be the case that the dynamics of any physical system (including all computers, which of course are physical systems themselves) could be efficiently simulated by a simple model of a computer called the Turing machine. A consequence was that computational problems that were found to be hard for Turing machines---those requiring a runtime superpolynomial in the size of the input---remained hard no matter what machine was built to solve them. But in the latter part of the 20th century, an intriguing counterexample emerged: quantum mechanics. The simulation of straightforward quantum systems seemed to have an exponential computational cost. This led to a provocative question: wha...