This is the first extensive treatment of the theory of corings and their comodules. In the first part, the module-theoretic aspects of coalgebras over commutative rings are described. Corings are then defined as coalgebras over non-commutative rings. Topics covered include module-theoretic aspects of corings, such as the relation of comodules to special subcategories of the category of modules (sigma-type categories), connections between corings and extensions of rings, properties of new examples of corings associated to entwining structures, generalisations of bialgebras such as bialgebroids and weak bialgebras, and the appearance of corings in non-commutative geometry.