Inversion of Control

Often used synonymously with dependency injection, inversion of control (IoC) is the more abstract design philosophy, and dependency injection is one strategy of implementing that philosophy, which basically states that control flow be passed to smaller modules of code rather than being governed by a central control program.

This rather obtuse phrase stems from that fact that "control" is passed on to smaller autonomous code constructs while running a program. Contrast this to a program that calls out to methods procedurally. The code may be encapsulated, but the control resides with the main program.