Contents  
1. Introduction  
2. Notations and Preliminaries  
3. Optimization Problems  
4. Karush-Kuhn-Tucker (KKT) Conditions  
5. First-Order Optimization: Gradient Methods  
6. Non-smooth and L1 Norm Optimization Methods  
7. Second-Order Optimization: Newton’s Method  
8. Non-convex Optimization by Sequential Convex Programming  
9. Distributed Optimization  
10. Additional Notes  
11. Conclusion  