This lecture introduces students to nonlinear optimization and programming, with a focus on concepts that extend to the next class up in the problem hierarchy: from linear to convex problems, from convex to nonconvex problems. This includes, in particular, problem relaxations in both directions, geometric aspects, and randomization.