Programmide optimeerimise meetodid (sisuliselt siiski ainult paremaks tegemise meetodid) on olnud läbi aegade üheks põnevamaks teoreetilise arvutiteaduse ja tarkvaratehnika ühisosas olevaks uurimisobjektiks. Selle uurimine eeldab programmide semantika head mõistmist (arvutiteadus), ning optimeerimisvajaduse õiget hindamist ning optimeerimisvõtete realiseerimist tarkvaras (infotehnoloogia). Ajalooliselt tuli esialgu optimeerida nii mälukasutust kui töökiirust. Tänapäeval on mälu üsna laialt kättesaadav, ning püütakse enamjaolt vähendada programmi tööaega, kuigi ka nüüd tuleb registrite kasutust optimeerida. Uus ja seni uurimata valdkond on spetsifikatsioonidest automaatselt konstrueeritud programmide optimeerimine. Sel juhul on optimeerimiseks infot rohkem kui käsitsi koostatud programmide korral: sünteesiv algoritm määrab ära programmide klassi ja annab täiendava info, mida saab optimeerimisel arvestada (programmide klass võib olla tunduvalt kitsam, kui programmeerimiskeele poolt lubatud klass). Konkreetne programmide optimeerimise vajadus tekkis programmeerimiskeskkonna CoCoViLa levikuga. On selgunud, et on võimalik CoCoViLas automaatselt sünteesitud ja Javas esitatud programme üsna vähese vaevaga tunduvalt lühemaks, ja seega ka kiiremaks muuta, ning osaliste arvutuste (partial evaluation) ja tüübiteisendustega ka suuremat kiiruse tõusu saavutada. Just see viimane osa pakub teaduslikult suurt huvi. Võib loota, et osalised arvutused sobivad loodava optimeerimismeetodi aluseks.
Käesolev teema sobib neile, kes on kuulanud või kavatsevad kuulata programmide semantika kursust ning ei karda programmeerimist Javas.