This course studies the theoretical foundations of linear and integer programming with focus on algorithmic results. Topics covered will include algorithms for linear programming, Farkas lemma, duality, simplex method, polarity, lattices, basis reduction, algorithms for integer linear programming, total unimodularity, theory of cutting-planes.