This course focuses on theory, algorithms and applications of convex optimization. Convex optimization deals with optimization problems where the objective function and the constraints of the problem are both convex. These problems appear in a variety of applications in diverse fields of science and engineering (e.g., statistics, signal/image processing, wireless communications, medical imaging, machine learning, economics, to name a few). Students will be trained to recognize, model/formulate, and solve convex optimization problems. Applications will revolve around medical imaging, big data and machine learning, and statistical (parameter) estimation. The course lectures will be divided into 4 sections: (1) Basics of convex analysis, (2) First-order methods, (3) Duality, and (4) Second-order methods. For advanced topics, we will cover selected problems covering the research themes of the class. Implementation of optimization algorithms will be carried out in Python.