Prerequisites: Minimum grade of C- in CMSC330 and CMSC351 and permission of the CMNS-Computer Science department. This course is an introduction to differentiable Programming, a new programming paradigm in which a numerical program can be differentiated through automatic differentiation , allowing gradient-based optimization of parameters in the program. It has broad applications in Computer Graph ics, Computer Vision, Deep Learning, Quantum Computing, System Control, and many more. The course assumes a good working knowledge of linear algebra and differentiation.