Un algoritmo es una secuencia de pasos para resolver un problema de manera precisa y finita. Los algoritmos se implementan como programas mediante lenguajes de programación. El diseño de algoritmos implica dividir un problema en partes más pequeñas, refinar los pasos de manera gradual y representar la solución mediante flujogramas, diagramas o pseudocódigo. Un programa consta de entrada de datos, acciones del algoritmo y salida de resultados. La calidad de software se define por la ausencia de errores y la adecuación a las necesidades del usuario.