Any well-defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values, as output. ● A sequence of computational steps that transform the input into the output. ● A tool for solving a well-specified computational problem. The statement of the problem specifies in general terms the desired input/output relationship.