1 Understand the problem: How do we know that we understand a problem sufficiently? What are we trying to solve?
2 Formulate the problem: Produce a concise representation of the problem. This will normally involve abstraction and some form of mathematical notation.
3 Design an algorithm: we can set about designing algorithms that apply to, and solve, the representation of the problem.
4 Implement the algorithm: in this stage we write computer code that implements the algorithm.
5 Run the code and solve the original problem: in this stage we actually try out the solution. After this, it is necessary to evaluate the results to see if they have solved the problem.