This groundbreaking, yet accessible book contains original results on the interaction between graph theory and computational complexity using methods from finite model theory. As well as a wealth of new, previously unpublished results, the author also gives an account of the established results in the area.