There are fantastic books all over theoretical computer science on the same subjects. But this one, I find it simply the best of all of them. Why? Because it explains what really computer science is about, which is computation as the object of study, and it does so in such a friendly manner and accessible to mathematicians, physicists and (of course) computer scientists of all levels. In the preface of the book explicitly says so, the objective of this book is to show why computational complexity is such a beautiful field with beautiful mathematics, without going too much deeper into the technicalities. Even though they omit the gruesome details, I felt that the understanding gained from reading the book was enough to look at the references and go directly to the papers. Thus, at the same time, this book presents a full review of all computational complexity theory. Also, the problems at the end of each chapter are very fun, and they make the reader gain a deeper understanding of the chapter and other subjects that were not covered. The notes section after each problem set are full of anecdotes and historical remarks that makes the reading experience even more wonderful.