Starting from the basics of computability, this undergraduate introduction focuses on the P versus NP Question and the theory of NP-completeness.