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.