Information integration is the problem of combining together heterogeneous data residing at different sources and providing the user with a unified view of these data. Integrating heterogeneous data is fundamental problem of real world applications and is characterized by exciting issues, both theoretical and practical. In this course we will introduce the theoretical foundations of information integration and present an overview on the body of research work carried out in the area. Special attention will be devoted to the following aspects: logical foundations of information integration, architectures for information integration, modeling an information integration application, ontology-based data access and integration, processing queries in information integration, data exchange, and reasoning on queries.