This tutorial will present an overview of the use of Monadic Second-Order Logic to describe sets of finite graphs and graph transformations, in relation with the notions of tree-width and clique-width. It will review applications to the construction of algorithms, to Graph Theory and to the extension to graphs of Formal Language Theory concepts. We first explain the role of Logic. A graph, either finite or infinite, can be considered as a logical structure whose domain (the ground set of the logical structure) consists of the set of vertices ; a binary relation on this set represents adjacency. Graph properties can be expressed by logical formulas of different languages and classified accordingly. First-order formulas are rather weak in this respect because they can only express local properties, like having degree or diameter at most k for fixed k. Most properties of interest in Graph Theory can be expressed in second-order logic (this language allows quantifications on relati...