Abstract
Aspect-oriented programming (AOP) is an emerging programming paradigm for modularizing crosscutting concerns. This tutorial introduces basic concepts of AOP and its novel language constructs such as the pointcut and advice, and the inter-type declarations. The tutorial also overviews research and development trends in AOP, mainly on language designs, implementation techniques, support for software development, theoretical foundations, and empirical studies.