Discrete Optimization is a branch of optimization which embodies a significant area of combinatorics that deals with discrete values, such as integers. There are two main branches of Discrete Optimization:

1. Combinatorial Optimization, which refers to problems which deal with combinatorial structures such as graphs and,

2. Integer Programming, which refers to problems where mathematical optimization only deals with integers.

However, although these subjects may be considered different branches of Discrete Optimization, they are in fact not completely isolated from each other as problems under Combinatorial Optimization can fall under Integer Programming and vice versa. However, with the growth in this area of Mathematics, both branches are often used in conjunction to optimize, in other words, to find efficient methods of constructing good solutions as well as measuring the quality of these particular solutions.

The applicability of this method extends into almost every facet of society, from scheduling planes to coordinating the production of steel to designing pharmaceutical drugs. The methodology itself of finding good solutions to these everyday problems includes a variety of mathematical techniques such as constructing tree-growing procedures, integer lattices as well as the analysis of algorithms. Thus, understanding Discrete Optimization is crucial for the study of Discrete Math as well as other disciplines which examines optimization.