Our search has the following Google-type functionality:

If you use '+' at the start of a word, that word will be present in the search results.

*eg. Harry +Potter*

*Search results will contain 'Potter'.*

If you use '-' at the start of a word, that word will be absent in the search results.

*eg. Harry -Potter*

*Search results will not contain 'Potter'.*

If you use 'AND' between 2 words, then both those words will be present in the search results.

*eg. Harry AND Potter*

*Search results will contain both 'Harry' and 'Potter'.*

NOTE: AND will only work with single words not phrases.

If you use 'OR' between 2 single words, then either or both of those words will be present in the search results.

*eg. 'Harry OR Potter'*

*Search results will contain just 'Harry', or just 'Potter', or both 'Harry' and 'Potter'.*

NOTE: OR will only work with single words not phrases.

If you use 'NOT' before a word, that word will be absent in the search results. (This is the same as using the minus symbol).

*eg. 'Harry NOT Potter'*

*Search results will not contain 'Potter'.*

NOTE: NOT will only work with single words not phrases.

If you use double quotation marks around words, those words will be present in that order.

*eg. "Harry Potter"*

*Search results will contain 'Harry Potter', but not 'Potter Harry'.*

NOTE: "" cannot be combined with AND, OR & NOT searches.

If you use '*' in a word, it performs a wildcard search, as it signifies any number of characters. (Searches cannot start with a wildcard).

*eg. 'Pot*er'*

*Search results will contain words starting with 'Pot' and ending in 'er', such as 'Potter'.*

This beginning graduate textbook describes both recent achievements and classical results of computational complexity theory. Requiring essentially no background apart from mathematical maturity, the book can be used as a reference for self-study for anyone interested in complexity, including physicists, mathematicians, and other scientists, as well as a textbook for a variety of courses and seminars. More than 300 exercises are included with a selected hint set. The book starts with a broad introduction to the field and progresses to advanced results. Contents include: definition of Turing machines and basic time and space complexity classes, probabilistic algorithms, interactive proofs, cryptography, quantum computation, lower bounds for concrete computational models (decision trees, communication complexity, constant depth, algebraic and monotone circuits, proof complexity), average-case complexity and hardness amplification, derandomization and pseudorandom constructions, and the PCP theorem.

Part I. Basic Complexity Classes: 1. The computational model - and why it doesn't matter; 2. NP and NP completeness; 3. Diagonalization; 4. Space complexity; 5. The polynomial hierarchy and alternations; 6. Boolean circuits; 7. Randomized computation; 8. Interactive proofs; 9. Cryptography; 10. Quantum computation; 11. PCP theorem and hardness of approximation: an introduction; Part II. Lower Bounds for Concrete Computational Models: 12. Decision trees; 13. Communication complexity; 14. Circuit lower bounds; 15. Proof complexity; 16. Algebraic computation models; Part III. Advanced Topics: 17. Complexity of counting; 18. Average case complexity: Levin's theory; 19. Hardness amplification and error correcting codes; 20. Derandomization; 21. Pseudorandom constructions: expanders and extractors; 22. Proofs of PCP theorems and the Fourier transform technique; 23. Why are circuit lower bounds so difficult?; Appendix A: mathematical background.

Sanjeev Arora is a Professor in the department of computer science at Princeton University. He holds a Ph.D. from the University of California, Berkeley and has done foundational work in complexity theory, probabilistically checkable proofs, and approximation algorithms. Boaz Barak is an assistant professor in the department of computer science at Princeton University. He holds a Ph.D. from the Weizmann Institute of Science.

'This book by two leading theoretical computer scientists provides a comprehensive, insightful and mathematically precise overview of computational complexity theory, ranging from early foundational work to emerging areas such as quantum computation and hardness of approximation. It will serve the needs of a wide audience, ranging from experienced researchers to graduate students and ambitious undergraduates seeking an introduction to the mathematical foundations of computer science. I will keep it at my side as a useful reference for my own teaching and research.' Richard M. Karp, University of California at Berkeley 'This text is a major achievement that brings together all of the important developments in complexity theory. Student and researchers alike will find it to be an immensely useful resource.' Michael Sipser, MIT, , author of Introduction to the Theory of Computation 'Computational complexity theory is at the core of theoretical computer science research. This book contains essentially all of the (many) exciting developments of the last two decades, with high level intuition and detailed technical proofs. It is a must for everyone interested in this field.' Avi Wigderson, Professor, Institute for Advanced Study, Princeton