The problem and the desired solution must be clearly specified and understood.
Most algorithms use some variation on the divide and conquer technique.
A large problem is solved by breaking it up into subproblems (divide) and
putting the solutions to the subproblems together into a complete solution
The algorithm must be clearly specified.
should be proved. [**]
Testing: Programming an algorithm results in a computer solution to
the original problem. One algorithm can have
many implementations (realizations in one or more programming languages, and different methods of implementation by individual programmers.).
[**] Early programmers, including Alan Turing [1912-1954] and John von Neumann [1903-1957], not only wrote their programs but also accompanied them by formal mathematical proofs of correctness. However most recent programming languages have features that preclude formal proofs of correctness. We will have to change the languages in order to perform the same kind of proof of correctness that we expect of engineering projects!
Last Updated 01/05/2000