Kun otetaan huomioon, että tietokoneohjelmoinnin määritelmä on niin laaja ja ohjelmien käyttö niin laajalle levinnyttä, tietokoneohjelmointia on todella monia tyyppejä, jotka määritellään usein jyrkästi eri tavoilla. Perusohjelmointityypit voidaan jakaa ohjelmointikielen mukaan, kuten C, Lisp tai Java®, jota ohjelmoija käyttää. Muissa yhteyksissä tietokoneohjelmointia voi olla vain kahta tyyppiä – järjestelmä ja sovellus. Joitakin eroja tehdään verkon ohjelmoinnin, web-pohjaisen ohjelmoinnin ja työpöydän ohjelmoinnin välillä. Eri ohjelmointityypit voidaan joskus erottaa kohdealustalla, kuten sulautettujen järjestelmien ohjelmointi, reaaliaikaisen järjestelmän (RTS) ohjelmointi tai tietokannan ohjelmointi.
Erilaiset tietokoneohjelmointityypit määritellään usein ohjelmiston kirjoittamiseen käytettävän kielen mukaan. Käytettävissä on monia kieliä, mutta ne kuuluvat yleensä rakenteellisiin kieliin, kuten C: hen, tai olio-kieliin, kuten Java®, ja ammattilaiset käyttävät molempia yleisesti eri tehtäviin. Kielet voivat myös olla välttämättömiä, kuten aiemmin mainitut, tai toiminnallisia, kuten Lisp, jossa ohjelmat koostuvat sarjasta toimintoja komentojen sijasta. Jotkut tietokoneohjelmoinnit tehdään puhtaasti komentosarjakielillä, jotka tulkitaan ihmisen luettaviksi asiakirjoiksi, jotka suorittavat toimintoja toisessa kehyksessä.
Perinteisesti on tehty ero kahden laajan tietokoneohjelmointityypin välillä. Ensimmäinen on sovellusohjelmointi ja sisältää ohjelmien kirjoittamisen, joita voidaan käyttää suoraan johonkin toimintoon. Vaihtoehtoisesti on olemassa järjestelmäohjelmointi, jonka tarkoituksena on suunnitella ohjelmia laitteiston tai kehysten hallintaan, joissa sovellukset, kuten käyttöjärjestelmät, voivat toimia.
Kun verkko- ja etäviestintätekniikkaa käytettiin laajemmin, tietyt ohjelmointityypit alkoivat erottua muista tietokoneohjelmoinnin aloista. Verkko -ohjelmointia pidetään erilaisena verkkoprotokollien ja laitteistorajapintojen vaaditun tuntemuksen vuoksi. Verkkopohjaisten sovellusten tai palvelimien ohjelmointi edellyttää tietoturvarajoitusten, Internet-protokollien ja ainutlaatuisten ohjelmointisuunnitelmien tuntemusta.
On myös tietokoneohjelmointityyppejä, jotka ovat ominaisia tietylle alalle tai kohdelaitteistolle. Tietokantaohjelmointi edellyttää erityisten kyselykielien, komentosarjojen ja muiden elementtien käyttöä vuorovaikutuksessa tiettyjen tietokantainfrastruktuurien kanssa. Peliohjelmointi sisältää tietoa grafiikkalaitteistosta, grafiikka -algoritmeista ja joskus erityisistä optimointitekniikoista. Sulautetut järjestelmät, kuten kädessä pidettävät laitteet tai konsolit, voivat sisältää ainutlaatuisia laitteistomääritelmiä ja tietoja myyjäkirjastoista. Edistyneempi reaaliaikainen järjestelmäohjelmointi voi sisältää vikaturvallisen ohjausohjelmiston kirjoittamisen ydinvoimaloille tai armeijan laitteistoille.