This group gathers pioneers of theory of computation whose primary contribution was computational complexity theory, classifying problems by the time, space or other resources an algorithm needs to solve them, including the P versus NP question, NP-completeness, polynomial-time reductions, complexity classes and hierarchy theorems, circuit and communication complexity, proof complexity, algorithmic information theory and Kolmogorov complexity, and the study of hardness of approximation. It follows the Computational complexity and cryptography second-level heading of the ACM Computing Classification System under Theory of Computation. Their shared work is proving what is and is not efficiently computable in principle, as distinct from designing one specific efficient algorithm, which belongs to Algorithm Design and Analysis, or a cryptographic construction, which belongs to Cryptography and Cryptanalysis.