Generating code as independent, reusable functions or modules that can be combined to solve larger problems.