The course starts from the basic concepts in Optimization such as topography of design space and convexity, to advanced levels such as multi-objective and multi-variable optimization. A variety of essential algorithms in each category are taught. Students are taught practical programming of these algorithms with applications in machine design and vibrations. Outcomes: The students grasp the significance of optimization in mechanical engineering applications. They can pose an engineering problem as an idealized mathematical optimization problem, solve it and understand the solution. They can also code the problem using standard subroutines. They can also deal with multi-objective optimization where objectives are conflicting.