Področje pisanja programskih rešitev ni tako mlado, kot bi si marsikdo mislil – veliko starejše je od vas, pravzaprav je starejše celo od večine profesorjev naše fakultete. Zato je tudi zelo raznoliko in pokriva tako razvoj zelo specializiranih gonilnikov kot obsežnih bančnih informacijskih sistemov. In čeprav je zanj, enako kot za področje računalništva nasploh, značilno hitro menjavanje tehnologij in stremljenje za novimi, boljšimi rešitvami, pa se z zatonom določene tehnologije običajno ne zavrže vsega. Dobre rešitve in prakse preživijo in se pogosto celo reinkarnirajo v novih tehnologijah, podobno kot to velja za kavbojke ali skupino The Beatles, ki sta »in« praktično od svoje pojavitve. Lahko bi celo rekli, da so se tudi na tem področju izkristalizirale nekakšne splošno veljavne »resnice«, ki jih pravi programer mora poznati. Tehnologija programske opreme je predmet, ki ta uporabna znanja in prakse na praktičen način posreduje študentom.

Pri tem študenta najprej postavimo v vlogo vodje projekta razvoja računalniškega sistema, ki bo zahteval večmesečni razvoj, izvajal vrsto aktivnosti in ga bo mogoče uporabljalo na tisoče uporabnikov. Zato je nadvse pomembno poznavanje problematike razvoja (velikih) programov, različnih pristopov k razvoju ter poznavanje področij, kot so analiza naročnikovih zahtev, načrtovanje, izdelava in vzdrževanje programa. In ravno pri teh so nenadomestljive najboljše izkušnje, ki so se skozi leta nabrale v področju tehnologije programske opreme.

Poseben poudarek je namenjen tudi dobrim praksam pisanja programov z vidika programerja. In kot je za odlično orehovo potico potrebno sestaviti kvalitetne sestavine ter gospodinjino natančno izvedbo recepta, je tudi do odličnega programa le ena pot – skrbno premišljeni in natančno izvedeni koraki izdelave programa. Kaj je najpomembnejše? Pri potici gospodinja, pri programu pa programer. Potica je tako dobra tudi zato, ker ima gospodinja dolgoletne izkušnje in posredovano znanje več rodov. Kaj pa programer?

Predmet predvideva dobro znanje programiranja (predvsem v programskem jeziku Java), algoritmov in podatkovnih struktur ter podatkovnih baz. Poleg predavanj in laboratorijskih vaj vključuje tudi skupinsko delo na projektu, ki obsega vse od priprave do realizacije projekta ter njegove predstavitve.