This book is designed on similar lines to the same author's "A First Course in Formal Language Theory". Together with this and "A First Course in Formal Logic and its Applications in Computer Science" by R.D. Dowsing et al., it is aimed at first- and second-year undergraduates with the intention of covering the formal theory required at the start of an honours degree in computing. This text covers the classic material on computability using Turing machines. The reader is led into the more recent results concerning complexity classes and the important work on NP-completeness and PSPACE-completeness. Emphasis is placed on clear and well motivated exposition, and numerous exercises are included.