Algebraic graph theory is a fascinating subject concerned with the interplay between algebra and graph theory. Algebraic tools can be used to give surprising and elegant proofs of graph theoretic facts, and there are many interesting algebraic objects associated with graphs. The authors take an inclusive view of the subject, and present a wide range of topics. These range from standard classics, such as the characterization of line graphs by eigenvalues, to more unusual areas such as geometric embeddings of graphs and the study of graph homomorphisms. The authors' goal has been to present each topic in a self-contained fashion, presenting the main tools and ideas, with an emphasis on their use in understanding concrete examples. A substantial proportion of the book covers topics that have not appeared in book form before, and as such it provides an accessible introduction to the research literature and to important open questions in modern algebraic graph theory. This book is primarily aimed at graduate students and researchers in graph theory, combinatorics, or discrete mathematics in general. However, all the necessary graph theory is developed from scratch, so the only pre-requisite for reading it is a first course in linear algebra and a small amount of elementary group theory. It should be accessible to motivated upper-level undergraduates.