1 Introduction  
2 Preliminaries  
2.1 Problem Formulation  
2.2 Deep Generative Models  
2.3 Optimization Algorithms  
3 Distribution Learning of Natural Sequences  
3.1 Local Sequence Space  
3.2 Global Sequence Space  
3.3 Databases  
4 Controllable Protein Sequence Design  
4.1 Structure-to-sequence Design  
4.2 Function-to-sequence Design  
4.3 High-level Constraints  
5 Applications  
5.1 Peptide  
5.2 Antibody  
5.3 Enzyme  
6 Challenges and Opportunities  
6.1 Challenges  
6.2 Opportunities  
7 Conclusion