This book provides a unified understanding of the use of generating functions for labelled and unlabelled structures. Applications include graphical enumeration, Polya theory and analysis of data structures in computer science, special functions, functional equations, asymptotic analysis, and differential equations.