Las características fundamentales de un algoritmo son que debe ser preciso, definido y finito. Un algoritmo describe tres partes: entrada, proceso y salida. Los problemas complejos pueden resolverse dividiéndolos en subproblemas más simples mediante el método "divide y vencerás". Existen diferentes herramientas para representar algoritmos como diagramas de flujo, pseudocódigo y diagramas Nassi-Schneiderman.