These are lecture notes on bilevel optimization. The class of bilevel optimization problems is formally introduced and motivated using examples from different fields. Afterward, the main focus is on how to solve linear and mixed-integer linear bilevel optimization problems. To this end, we first consider various single-level reformulations of bilevel optimization problems with linear or convex follower problems, discuss geometric properties of linear bilevel problems, and study different algorithms for solving linear bilevel problems. Finally, we consider mixed-integer linear bilevel problems, discuss the main obstacles for deriving exact as well as effective solution methods, and derive a branch-and-bound method for solving these problems.