Aspect-oriented programming (AOP) is a programming paradigm that aims to increase modularity by allowing the separation of cross-cutting concerns from the core concerns. AOP works by identifying aspects, which specify cross-cutting behavior using pointcuts and advice. The advice code is executed at the specified join points. This avoids tangling and scattering of code across multiple components. AOP promotes better modularity and evolvability compared to traditional object-oriented programming.