1 Introduction  
2 Background  
2.1 What are source code models?  
2.2 What is data augmentation?  
2.3 How does data augmentation work in source code?  
3 Source Code Data Augmentation Methods for Deep Learning  
3.1 Rule-based Techniques  
3.2 Model-based Techniques  
3.3 Example Interpolation Techniques  
4 Strategies and Techniques  
4.1 Method Stacking  
4.2 Optimization  
5 Scenarios  
5.1 Adversarial Examples for Robustness  
5.2 Low-Resource Domains  
5.3 Retrieval Augmentation  
5.4 Contrastive Learning  
6 Downstream Tasks  
6.1 Code Authorship Attribution  
6.2 Clone Detection  
6.3 Defect Detection and Repair  
6.4 Code Summarization  
6.5 Code Search  
6.6 Code Completion  
6.7 Code Translation  
6.8 Code Question Answering (CQA)  
6.9 Code Classification  
6.10 Method Name Prediction  
6.11 Type Prediction  
7 Challenges and Opportunities  
8 Conclusion