Un algoritmo es un conjunto de pasos precisos para resolver un problema. Debe tener entrada y salida definidas, ser finito, efectivo y determinista. Existen varios tipos de algoritmos como voraces, paralelos, probabilísticos y de divide y vencerás. Los diagramas de flujo y pseudocódigo describen algoritmos de forma gráfica y de alto nivel respectivamente.