stepwise refinement
– write description – take description as outline algorithm you want to develop- refine and elaborate description – gradually adding steps and detail- until you have a complete algorithm you can translate into programming language- top down design