The goal of this research is to unify and expand on many of the traditional approaches to solving integer programming problems by incorporating them into a software package. In additon, a new approach called "branch and cut" is proposed which promises to replace the branch and bound approach traditionally used to prove optimality. Integer programming problems arise in a wide range of engineering optimization problems where resources, such as machines are indivisible.