This textbook presents a theoretical treatment of linear programming, network flows and applications, integer programming, and computational complexity. The author includes a rigorous discussion of theory, numerous examples and exercises, and geometric intuitive explanations. He also offers computational tips and interpretation of software input.