This document provides an overview of integer programming and the branch-and-bound technique for solving integer programming problems. It begins with definitions of integer programming, mixed integer programming, and pure integer programming. It then provides examples of binary integer programming and mixed integer programming. The document goes on to discuss perspectives on solving integer programming problems, including using enumeration and LP relaxation. It provides a detailed example of applying the branch-and-bound technique to solve a binary integer programming problem. Finally, it discusses extensions of the branch-and-bound method for solving mixed integer programming problems.