This course covers modern optimization methods for machine learning applications. We will discuss both theory and implementation of common optimization algorithms in the context of machine learning applications. The topics covered include convex optimization, stochastic optimization, nonconvex optimization, and distributed optimization.