This module provides an introduction to the theory of graphs from an algorithmic perspective. A graph models a set of objects and a pairwise relation among them, such as locations on a map and roads between these locations. An algorithm is a step-by-step procedure for solving a problem, such as that of finding a shortest path between two locations. Students will learn to model real-world problems using graphs, and to solve them both by hand and with the help of software tools. Mathematical properties of graphs will be used in developing new algorithms and showing that these algorithms work correctly and efficiently.