The course aims at providing the basic structural and algorithmic theory of linear integer programming problems (i.e., optimizing linear functions over the integer points satisfying a given system of linear inequalities and equations). In particular, the following topics will be covered: