Un algoritmo es un conjunto de instrucciones definidas y no ambiguas para resolver un problema. Pueden expresarse de varias formas como pseudocódigo, diagramas de flujo o lenguajes de programación. Los algoritmos se describen en tres niveles: alto nivel, formal y de implementación. Sistemas formales como máquinas de Turing proveen modelos matemáticos para formalizar el concepto de algoritmo.