Why are some problems easy to solve, while others seem nearly impossible? What can we compute with a given amount of time or memory, and what cannot be computed at all? How will quantum physics change the landscape of computation? This book gives a playful and accessible introduction to the deep ideas of theoretical computer science.