1. Introduction  
2. Problem Formulation  
3. Pipeline Structure Creation  
3.1 Fixed Structure  
3.2 Variable Structure  
4. Algorithm Selection and Hyperparameter Optimization  
4.1 Grid Search  
4.2 Random Search  
4.3 Sequential Model-based Optimization  
4.4 Evolutionary Algorithms  
4.5 Multi-armed Bandit Learning  
4.6 Gradient Descent  
5. Automatic Data Cleaning  
6. Automatic Feature Engineering  
6.1 Feature Generation  
6.2 Feature Selection  
7. Performance Improvements  
7.1 Multi-fidelity Approximations  
7.2 Early Stopping  
7.3 Scalability  
7.4 Ensemble Learning  
7.5 Meta-learning  
8. Selected Frameworks  
8.1 CASH Algorithms  
8.2 AutoML Frameworks  
9. Experiments  
9.1 Comparability of Results  
9.2 Benchmarking Methodology  
9.3 Synthetic Test Functions  
9.4 Empirical Performance Models  
9.5 Real Data Sets  
10. Discussion and Opportunities for Future Research  
11. Conclusion