Samodejno programiranje v računalništvu in računalniškem inženirstvu se nanaša na proizvodnjo računalniške programske kode s strani nekega sistema ali programske opreme kot odziv na bolj abstrakten uporabniški vnos ali ukaze. V nekem smislu samodejno programiranje opisuje vsako situacijo, v kateri bo računalnik ali programska oprema stavek, ki ga vnese programer, zamenjal z blokom kode, ki lahko konkretno izvede dejanja, opisana v stavku. Kadar se uporablja v drugem smislu, lahko samodejno programiranje opiše cilj ustvarjanja programskega jezika ali sistema, ki lahko intuitivno sestavi dokončano aplikacijo, ki temelji le na najslabši smeri programerja. Samodejno programiranje se lahko uporablja na nekaterih računalniških raziskovalnih področjih za sklicevanje na proces oblikovanja sistema umetne inteligence (AI), ki je sposoben bodisi samostojno izdelati program za dokončanje naloge bodisi samo-spreminjati lastno kodo za izboljšanje funkcionalnosti.
Opredelitev samodejnega programiranja je nekoliko nejasna. Prvotno je bil uporabljen v zgodnjih letih računalniškega programiranja za opis prevoda abstraktnih navodil, podobnih zbirnemu jeziku, v razširjeno strojno kodo. To se je imenovalo samodejno programiranje, ker bi prevajalnik samodejno zamenjal en sam človeško berljiv stavek z desetinami ali več navodili strojne kode, pri čemer bi v bistvu samodejno pisal program na primitiven način. Prevajalniki jezikov v večini primerov še vedno izvajajo enaka dejanja, ne glede na uporabljeni prekrivni programski jezik.
Druga uporaba izraza “samodejno programiranje” je opis samodejnega ustvarjanja kode. To je takrat, ko lahko integrirano razvojno okolje (IDE) ali drugo orodje uporabite vizualno ali na zelo enostaven način, da določite, kako bo končni uporabnik videl program. Ko je želeni rezultat ustvarjen, lahko programska oprema ali IDE samodejno ustvari funkcionalno izvorno kodo, da doseže rezultat brez nadaljnjega vnosa programerja.
V nekaterih primerih se samodejno programiranje nanaša tudi na preučevanje, kako izvajati jezike na tako visoki ravni, da je izvorna koda videti kot naravni jezik. Programski jezik, kot je ta, bi nato samodejno ustvaril aplikacijo na podlagi širokega vnosa programerja. Ne glede na to, kako avtomatski postane jezik, je treba opozoriti, da mora programer na neki točki ročno spremeniti kodo za določeno funkcionalnost z uporabo samega programskega jezika.
Na področju umetne inteligence se izvaja nekaj raziskav o razvoju sistema, ki se lahko samodejno programira, da doda zmogljivosti, ki jim prvotno niso bile dane. To se razširi tudi na umetne inteligence, ki so sposobne pisati neodvisno programsko opremo, ki lahko reši določen problem. Ena od aplikacij bi bila ustvariti programski jezik, ki bi lahko uporabljal AI za ustvarjanje hitrih prototipov programov.