1. Introduction

2. What AD Is Not
2.1 AD Is Not Numerical Differentiation
2.2 AD Is Not Symbolic Differentiation

3. AD and Its Main Modes

4. AD and Machine Learning
4.1 Gradient-Based Optimization
4.2 Neural Networks, Deep Learning, Differentiable Programming
4.3 Computer Vision
4.4 Natural Language Processing
4.5 Probabilistic Modeling and Inference

5. Implementations
5.1 Elemental Libraries
5.2 Compilers and Source Code Transformation
5.3 Operator Overloading

6. Conclusions