* What is the essence of the similarity between linearly independent sets of columns of a matrix and forests in a graph? * Why does the greedy algorithm produce a spanning tree of minimum weight in a connected graph? * Can we test in polynomial time whether a matrix is totally unimodular?Matroid theory examines and answers questions like these. Seventy-five years of study of matroids has seen the development of a rich theory with links to graphs, lattices, codes, transversals, and projective geometries. Matroids are of fundamental importance in combinatorial optimization and theirapplications extend into electrical and structural engineering.This book falls into two parts: the first provides a comprehensive introduction to the basics of matroid theory, while the second treats more advanced topics. The book contains over seven hundred exercises and includes, for the first time in one place, proofs of all of the major theorems in thesubject. The last two chapters review current research and list more than eighty unsolved problems along with a description of the progress towards their solutions.