An important aspect of any engineering design problem is to achieve efficiency. This can be in terms of energy consumption, performance, time complexity, etc. In many cases, we have multiple solutions to a problem and we have to select the most efficient solution. Finding the optimal solution from all the available options is known as optimization. Optimization plays an important role in various engineering applications such as design optimization, transportation, computation, manufacturing, economics and game theory. There is a broad body of work involving the mathematical theories behind optimization, aimed at designing efficient algorithms. In this chapter, we will concentrate on the implementation of numerical methods for optimization.