Un [[algoritmo]] é unha secuencia non ambigua, finita e ordenada de instrucións que han dedeben seguirse para resolver un problema. Un programa normalmente implementa (traduce a unha linguaxe de programación concreto) un algoritmo. PodeUn haberalgoritmo programaspode queexpresarse nonde sedistintos axustenxeitos: ade unxeito algoritmográfico, (podencomo nonun terminar[[diagrama nunca)de fluxo]], neseen casoforma denominasede procedementocódigo acomo talen programa[[pseudocódigo]] ou nunha linguaxe de programación, en forma explicativa...
Os programas solenacostuman subdividirsea dividirse en partes menores (módulos), de modo que a complexidade algorítmica de cada unha das partes sexa menor que a do programa completo. Isto axuda ó desenvolvemento do programa.
Segundo [[Niklaus Wirth]] un programa está formado por [[algoritmo]]s e [[estrutura de datos]].
O obxectivo das diversas técnicas de programación propostas é mellorar tanto o proceso de creación de software como o seu mantemento. Entre elas pódense mencionar as programacións [[programación linealestruturada|linealestruturada]], [[programación estruturadamodular|estruturadamodular]], [[programación modulardeclarativa|modulardeclarativa]] e [[programación orientada a obxectos|orientada a obxectos]].