Proofs and Algorithms: An Introduction to Logic and Computability (Undergraduate Topics in Computer Science)