Najpogostejše orodje običajnega uporabnika sodobnih računalnikov je miška, saj z njo poganja programe. Dvo-klik na izbrano ikono in že se pred njim pojavi želeni program. Čudenje nad delujočimi funkcijami in razburjanje zaradi nedelujočih, to je njegov domet.
Malo izkušenejši uporabnik ve, da se za vsakim programom skriva programska koda: spremenljivke, funkcije, razredi, metode, klici, zanke, pogoji, ... Ve, da mora, preden omenjeni programski konstrukti "zaživijo", svojo vlogo opraviti prevajalnik oziroma, da se mora z njimi ukvarjati interpreter. Tudi to ve, da morata prevajalnik in interpreter programsko kodo, ki je danes običajno napisana v človeku razumljivih in dopadljivih oblikah, primerno obdelati, preden jo lahko procesor dejansko izvede. Tu pa se zgodba tudi za malo izkušenejšega uporabnika zaključi.
Le tisti najbolj zagnani računalničarji pa vejo, da se s programom od trenutka, ko je napisan, pa do trenutka, ko se dejansko začne izvajati, zgodi še marsikaj zanimivega. Svoje delo morajo med drugim opraviti zbirnik, povezovalnik in nalagalnik. Ali veste, kakšna je vloga zbirnika, katere naloge opravi in kako se posamezni zbirniki med seboj razlikujejo? Ali veste, zakaj program po zbiranju še ni pripravljen za izvajanje? Vas zanima, kaj vse se zgodi od miškinega klika do dejanskega zagona programa? Bi radi izvedeli, kakšne so razlike med "klasičnim" statičnim izvajanjem programov in izvajanjem v dinamičnem okolju (na primer z Javo)?
Če ste radovedne sorte in se boste pridružili predmetu Sistemska programska oprema, boste poleg odgovorov na zgornja vprašanja spoznali tudi nekatere druge sistemske programe, brskali po različnih formatih (binarnih in tekstovnih) sistemskih datotek in odkrivali globine delovanja sodobnih računalnikov.
Študenti opravljajo tri praktične programerske seminarske naloge (enakomerno razporejene po semestru) in končni izpit.