Računalničarji moramo poleg osnov programiranja pridobiti tudi
vpogled v drugačne programerske tehnike, kot sta proceduralno in
objektno-usmerjeno programiranje. V zadnjih letih se izrazito uveljavlja
funkcijski način programiranja, ki omogoča učinkovito razgradnjo
programa na skupek neodvisnih funkcij, s katerimi je možno program
izvajati tudi paralelno in s tem hitreje.

Pri predmetu se bomo
učili funkcijskega pristopa k programiranju v jezikih Standardni ML in
Racket. Spoznali bomo pojme, kot so tipizacija, leksikalni in dinamični
doseg, funkcijska ovojnica, razvili pa bomo tudi interpreter za lasten
programski jezik. Naš cilj bo pridobiti globje razumevanje v delovanje
programskih jezikov in s tem doseči mojstrstvo pri programiranju.

Predpogoj
za razumevanje snovi predmeta je poznavanje osnov programiranja v
proceduralnih jezikih (Java, C++, Python) in razumevanje koncepta
rekurzije.

Predmet se izvaja s predavanji, sprotnimi laboratorijskimi vajami in izdelavo domačih nalog.