Počítačové programy jsou prostě seznamy instrukcí pro počítač vykonat. Tito mohou sahat od právě nemnoho instrukcí, které provádějí jednoduchý úkol, k mnohem komplexnějšímu seznamu instrukcí, který může také zahrnovat stoly dat. Mnoho počítačových programů obsahuje milióny instrukcí, a mnoho z těch instrukce jsou vykonány opakovaně. Typické moderní PC (v roku 2005) moci vykonat asi 3 miliardy instrukcí za sekundu. Počítače nenabudou jejich neobyčejných schopností přes schopnost vykonat komplexní poučení. Poněkud, oni dělají milióny jednoduchých instrukcí uspořádaných lidmi známými jako programátoři.
V praxi, lidi normálně nepíší instrukce pro počítače přímo ve strojovém jazyce. Takové programování je neuvěřitelně nudné a velmi chyba-prone, dělat programátory velmi neproduktivní. Místo toho, programátoři popíšou požadované děje v “vysokém úrovňovém” programovacím jazyce, který je pak přeložený do strojového jazyka automaticky na zvláštním počítači programuje (tlumočníky a kompilátory). Některé programovací jazyky mapují velmi blízko ke strojovému jazyku, takový jako Assembly jazyk (jazyky nízké hladiny); u druhého konce, jazyky jako Prolog jsou založené na abstraktních principech daleko vzdálený od detailů stroje je skutečná operace (jazyky vysoké úrovně). Jazyk volený pro zvláštní úlohu závisí na povaze úlohy, dovednost zapadla programátorů, dostupnost nástroje a, často, požadavky zákazníků (například, projekty pro americkou armádu byly často požadované být v Ada programovacím jazyce).
Software je alternativa termín pro počítačové programy; to je více zahrnující fráze a zahrnuje celý doplňkový materiál doprovázet program potřeboval dělat užitečné úkoly. Například, videohra obsahuje ne jediný program sám, ale také data reprezentovat obrazy, zvuky a jiný materiál potřeboval vytvořit virtuální prostředí hry. Aplikace počítače je kus počítačového softwaru poskytovaného k mnoha uživatelům počítače, často v prostředí prodeje. Stereotypní moderní příklad aplikace je možná kancelářská souprava, soubor vzájemně spojených programů pro úlohy vykonávání obyčejné funkce.
Jít od extrémně jednoduchých schopností jediného programovacího jazyka instrukce k myriad schopnosti prostředků aplikačních programů tolik počítačových programů je extrémně velké a komplexní. Typický příklad je Windows XP, vytvořený od hrubě 40 miliónů řad počítačového kódu v C + + programovací jazyk;[7] tam je mnoho projektů ještě většího rozsahu, postavený velkými skupinami programátorů. Vedení této obrovské složitosti je klíč k vypracování takových projektů možný; programovat jazyky a programovací praxe, umožnit úloze být rozdělen do menších a menších subtasks dokud ne oni přijdou uvnitř schopností jediného programátora v rozumné době.
Přesto, proces vyvíjejícího softwaru zůstane pomalu, nepředvídatelný, a chyba-prone; kázeň softwarového inženýrství se pokusila, s nějakým dílčím úspěchem, dělat proces rychlejší a produktivnější a zlepšovat kvalitu konečného produktu.