Two central problems in computer science are P vs NP and the complexity of matrix multiplication. The first is also a leading candidate for the greatest unsolved problem in mathematics. The second is of enormous practical and theoretical importance. Algebraic geometry and representation theory provide fertile ground for advancing work on these problems and others in complexity. This introduction to algebraic complexity theory for graduate students and researchers in computer science and mathematics features concrete examples that demonstrate the application of geometric techniques to real world problems. Written by a noted expert in the field, it offers numerous open questions to motivate future research. Complexity theory has rejuvenated classical geometric questions and brought different areas of mathematics together in new ways. This book will show the beautiful, interesting, and important questions that have arisen as a result.