How Hard is too Hard? An Introduction to Complexity
An accessible introduction to computational complexity theory, distinguishing between decidable and undecidable problems and exploring the mathematical foundations of efficient algorithms and cryptography.
