A staple in OOPS interview questions and answers, be prepared to answer this one. Coupling is a term used in the Object Oriented Programming (OOP) field to refer to how cohesive linked modules are. In other words, it helps describe the degree of dependency between classes, subroutines and overall libraries. Coupling is divided into two categories: high and low coupling.   High coupling occurs when there is direct interaction between connected components, meaning any changes made within one module requires changes in its partner module as well. It results in complexity as each module must remain aware of ongoing updates made in the other connected module.   Low coupling on the other hand allows for greater flexibility and scalability of connected components, as they can easily be tweaked separately without requiring updates across different modules. This makes system maintenance much simpler, which improves code organization and testing capabilities resulting in more reliable functioning software.