Modern Methods in Nonsmooth Optimization