The aim of this book is to present a suitable blend of practical optimization methods and some central parts of the theory, in particular convexity and constrained optimization. The mathematics behind some basic algorithms is treated. The theory covered is presented in a rigorous way, with clearly stated definitions and theorems and with full proofs. The book contains a large number of exercises, which are provided with answers and in some cases complete solutions. Prerequisites are calculus in one and several variables, and linear algebra including some eigenvalue theory. Positive definite matrices are discussed in an appendix. This book is first and foremost aimed to be used in optimization courses at universities as well as engineering and business schools.