coupling is the manner and degree of interdependence between software modules.
cohesion is the degree to which the elements of a module belong together.
In a good software design, it is always desirable to have less interaction among modules( Low coupling ) and high cohesion ( advantages: 1: Reduced module complexity 2: Increased system maintainability 3: Increased module reusability )