In this course students will be introduced to different forms of optimization problems and the various approaches that are available to solve such problems. The course will conclude with defining and solving non-linear programming problems. The course contains numerous definitions, theorems, lemmas and proofs. Examples will be interspersed throughout.