This beginning graduate textbook describes both recent achievements and classical results of computational complexity theory. Requiring essentially no background apart from mathematical maturity the book can be used as a reference for self-study for anyone interested in complexity including physicists mathematicians and other scientists as well as a textbook for a variety of courses and seminars. More than 300 exercises are included with a selected hint set.