Een computerprogramma is een opeenvolging van opdrachten voor een computer met als doel om die computer een specifieke taak te laten uitvoeren. Er is een verschil tussen een computerprogramma dat door een programmeur zelf is geschreven en dat kan worden veranderd, zoals het bij programmeren gaat, een programma in de vorm van software die niet kan worden veranderd en een programma dat als firmware wordt gedraaid of in de hardware wordt ingebed.
Een geschreven computerprogramma is een opeenvolging van statements, die in het algemeen door een computerprogrammeur is ingevoerd. Deze leesbare tekst wordt ook de broncode van het computerprogramma genoemd. Broncode wordt geschreven in een programmeertaal, die vaak een van de twee belangrijkste programmeerparadigma's volgt: imperatief of declaratief programmeren. Deze broncode maakt het voor de programmeur mogelijk het algoritme van het betreffende computerprogramma te bestuderen en zo nodig verder te ontwikkelen. De geschreven broncode wordt in een computerbestand opgeslagen en kan met behulp van een compiler naar programmacode in machinetaal worden omgezet, die door de computer kan worden verwerkt, ook wel een executable of binair bestand genoemd, en later door een centrale verwerkingseenheid worden uitgevoerd of met een interpreter worden uitgevoerd. Een computerprogramma wordt maar een enkele keer direct in assembler geschreven, omdat dat moeilijker programmeren is, en gebeurt uitsluitend wanneer maximale efficiëntie is vereist. Er zijn veel verschillende programmeertalen.
Een verzameling van computerprogramma's en bijbehorende gegevens wordt software genoemd. Als een computerprogramma wordt uitgevoerd, leest de computer de instructies uit het programma, zoals deze zijn opgeslagen op een gegevensdrager, bijvoorbeeld bestanden op een harde schijf, en voert de programmacode in de aangeven volgorde uit, gebruik makend van de gegevens.
Het idee van programmeren en het vastleggen van computerprogramma's werd voor het eerst in 1936 door Alan Turing geformuleerd. Computerprogramma's werden voordat er voor computers elektronisch computergeheugen was ontwikkeld op een fysieke gegevensdrager opgeslagen, bijvoorbeeld op een ponsband of op ponskaarten.