This book considers one of the basic problems in discrete mathematics: given a collection of constraints, describe up to isomorphism all the objects that meet them. Only a handful of classification results for combinatorial objects are dated before the mid20th century; indeed, it is through modern computers and recent developments in algo