Bipartite graphs are perhaps the most basic of objects in graph theory, both from a theoretical and practical point of view. However, sometimes they have been considered only as a special class in some wider context. This book deals solely with bipartite graphs. Together with traditional material, the reader will also find many unusual results. Essentially all proofs are given in full; many of these have been streamlined specifically for this text. Numerous exercises of all standards have also been included. The theory is illustrated with many applications especially to problems in timetabling, chemistry, communication networks and computer science. For the most part the material is accessible to any reader with a graduate understanding of mathematics. However, the book contains advanced sections requiring much more specialized knowledge, which will be of interest to specialists in combinatorics and graph theory.