Um programa é um conjunto de instruções que indicam ao computador como fazer algo. O básico de qualquer programa é mostrar como o computador receberá a entrada e retornará a saída.
Um programa resolve problemas. No entanto, os programas são muito literais. É como firmar um contrato com um gênio: o gênio (neste caso, o programa) lhe dará exatamente o que você pedir. Exatamente. Erros ocorrem quando o programador faz suposições sobre o que deve acontecer em vez de descrever com precisão qual entrada pode ser recebida e qual saída resultará.