Graph algebras are a family of operator algebras which are associated to directed graphs. These algebras have an attractive structure theory in which algebraic properties of the algebra are related to the behaviour of paths in the underlying graph. In the past few years there has been a great deal of activity in this area, and graph algebras have cropped up in a surprising variety of situations, including non-abelian duality, non-commutative geometry, and the classification of simple C*-algebras. The first part of the book provides an introduction to the subject suitable for students who have seen a first course on the basics of C*-algebras. In the second part, the author surveys the literature on the structure theory of graph algebras. highlights some applications of this theory, and discusses several recent generalisations which seem particularly promising.