The course aims at giving a modern and thorough treatment of algorithms for solving convex, large-scale and nonsmooth optimization problems. Applications of convex optimization. Convex sets, functions and optimization problems. Optimality conditions. Basic algorithms for unconstrained optimization (gradient, fast gradient and Newton methods). Basic algorithms for constrained optimization (Interior point and active set methods). Subdifferential and conjugate of convex functions. Duality. Proximal mappings. Proximal minimization algorithm. Augmented Lagrangian Method. Forward-Backward and Douglas-Rachford splitting. Alternating Direction Method of Multipliers (ADMM). Coordinate descent.