Mathematically, most of the interesting optimization problems can be formulated to optimize some objective function, subject to some equality and/or inequality constraints. This book introduces some classical and basic results of optimization theory, including nonlinear programming with Lagrange multiplier method, the Karush-Kuhn-Tucker method, Fritz John's method, problems with convex or quasi-convex constraints, and linear programming with geometric method and simplex method.A slim book such as this which touches on major aspects of optimization theory will be very much needed for most readers. We present nonlinear programming, convex programming, and linear programming in a self-contained manner. This book is for a one-semester course for upper level undergraduate students or first/second year graduate students. It should also be useful for researchers working on many interdisciplinary areas other than optimization.