The step-by-step process of designing algorithms to solve specific problems or achieve specific goals.