The book gives a detailed and rigorous treatment of the theory of optimization (unconstrained optimization, nonlinear programming, semi-infinite programming, etc.) in finite-dimensional spaces. The fundamental results of convexity theory and the theory of duality in nonlinear programming and the theories of linear inequalities, convex polyhedra, and linear programming are covered in detail. Over two hundred, carefully selected exercises should help the students master the material of the book and give further insight. Some of the most basic results are proved in several independent ways in order to give flexibility to the instructor. A separate chapter gives extensive treatments of three of the most basic optimization algorithms (the steepest-descent method, Newton's method, the conjugate-gradient method). The first chapter of the book introduces the necessary differential calculus tools used in the book. Several chapters contain more advanced topics in optimization such as Ekeland's epsilon-variational principle, a deep and detailed study of separation properties of two or more convex sets in general vector spaces, Helly's theorem and its applications to optimization, etc. The book is suitable as a textbook for a first or second course in optimization at the graduate level. It is also suitable for self-study or as a reference book for advanced readers. The book grew out of author's experience in teaching a graduate level one-semester course a dozen times since 1993. Osman Guler is a Professor in the Department of Mathematics and Statistics at University of Maryland, Baltimore County. His research interests include mathematical programming, convex analysis, complexity of optimization problems, and operations research.