Corings and comodules are fundamental algebraic structures, which can be thought of as both dualisations and generalisations of rings and modules. Introduced by Sweedler in 1975, only recently they have been shown to have far reaching applications ranging from the category theory including differential graded categories through classical and Hopf-type module theory to non-commutative geometry and mathematical physics. 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.