Een computerprogramma is een reeks instructies die een computer vertellen wat hij moet doen. Het is samengesteld uit een reeks instructies en/of datastructuren en bestaat meestal uit een do-loop, een while-loop en/of een for-loop. De instructies zijn geschreven in een programmeertaal, zoals C, Java, Python of andere. Een computerprogramma wordt ook wel een softwareprogramma genoemd.
Computerprogramma's worden gebruikt om diverse taken uit te voeren, zoals onder meer berekeningen, gegevensverwerking of systeembewerkingen. Computerprogramma's kunnen variëren van zeer eenvoudig tot zeer complex en kunnen op verschillende manieren worden gestructureerd. Veel computerprogramma's zijn geschreven in een taal op hoog niveau, zoals C of Java, terwijl andere in assembleertaal zijn geschreven.
Computerprogramma's kunnen worden onderverdeeld in twee brede categorieën: applicaties en systeemsoftware. Applicatiesoftware omvat programma's zoals tekstverwerkers, webbrowsers, mediaspelers en video-editors. Applicatieprogramma's worden gebruikt om de gebruikerservaring en productiviteit te verbeteren door alledaagse taken te automatiseren en krachtige functies mogelijk te maken. Systeemsoftware omvat de programma's die nodig zijn om de computer te laten draaien, zoals besturingssystemen, apparaatstuurprogramma's en communicatieprotocollen. Systeemsoftware is verantwoordelijk voor het besturen en beheren van de computerhardware en het leveren van basisdiensten voor andere programma's.
Naast computerprogramma's bevatten computersystemen ook gegevens, zoals instructies, documenten en bestanden. Samen vormen computerprogramma's en gegevens de basis van een computersysteem.
Computerprogramma's worden voortdurend ontwikkeld en verbeterd om aan de steeds veranderende behoeften van gebruikers en nieuwe technologieën te voldoen. Als zodanig is computerprogrammering een zeer technisch en gespecialiseerd vakgebied. Degenen die geïnteresseerd zijn in het maken van en werken met computerprogramma's moeten beschikken over een combinatie van computerwetenschappelijke kennis, kennis van programmeurs, vaardigheid in programmeertalen en vaardigheden op het gebied van softwareontwikkeling.