Bipartite graphs are perhaps the most basic of objects in graph theory, both from a theoretical and practical point of view. Until now, they have been considered only as a special class in some wider context. This work deals solely with bipartite graphs, providing traditional material as well as many new and unusual results. The authors illustrate the theory with many applications, especially to problems in timetabling, chemistry, communication networks...