An algorithm is a set of steps to solve a problem. When developing an algorithm, the problem must be defined, the algorithm designed, and the algorithm tested on paper. To design an algorithm, the problem objectives and inputs/outputs must be specified. The algorithm must be correct, simple, clear, precise, easy to implement, and efficient. Algorithms can be written as narrative English, pseudocode, or flowcharts.