Pogojev za vključitev v delo ni.
Funkcijsko programiranje
Zoran Bosnić
Zoran Bosnić
Predmet poučuje koncept in uporabo paradigme funkcijskega programiranja, skozi katero se dotika teorije programskih jezikov in poglobljenega razumevanja njihovih lastnosti. Poglavja pri predmetu vsebujejo:
1. Uvod v funkcijsko programiranje.
2. Pojem okolja, leksikalnega in semantičnega dosega.
3. Osnove funkcijskega jezika Standard ML (sintaksa, semantika, enostavni in sestavljeni podatkovni tipi, opcije, lastni tipi) in osvajanje naslednjih pojmov:
-ujemanje vzorcev,
-funkcije višjega reda, currying,
-delo z moduli.
4. Osnove funkcijskega jezika Racket in osvajanje naslednjih pojmov:
-takojšnja in lena evalvacija,
-tokovi,
-zakasnitev in sprožitev,
-gradnja podatkovnih tipov,
-funkcije z dinamičnim številom argumentov,
-izdelava interpreterja.
5. Primerjava funkcijskega in objektno usmerjega programiranja.
6. Vrste tipiziranj (statično/dinamično, močno/šibko, implicitno/eksplicitno) in trdnost/polnost sistema tipov.
- R. Pucella: Notes on Programming SML/NJ, Cornell, 2001
- Matthew Flatt, Robert Bruce Findler et al.: The Racket Guide, 2015.
- Ravi Sethi: Programming Languages: concepts &, constructs. Addison-Wesley, 1996.
- A. Tucker, R. Noonan: Programming Languages: Principles and Paradigms. McGraw-Hill, 2007.
Študenti, ki so dokončali prvostopenjski študij RI, so opravili predmete s področja osnov programiranja in pretežno spoznali objektno-usmerjeno paradigmo programiranja. Cilj tega predmeta predstaviti drugačne tehnike programiranja s poudarkom na funkcijskem programiranju. Predmet bo študentom omogočil razvoj veščin kritičnega, analitičnega in sintetičnega mišljenja pri uporabi in razumevanju delovanja programskih jezikov kot temeljnih orodij vsakega programerja.
Po uspešnem zaključku predmeta bo študent:
- razlikoval paradigme objektno-usmerjenega in funkcijskega programiranja,
- znal opisati prednosti izogibanja mutaciji in stranskim učinkom,
- sposoben uporabljati ujemanje vzorcev, funkcije višjega reda, lastne podatkovne tipe, zakasnjeno evalvacijo,
- razločeval med statično/dinamično, impliticno/eksplicitno, šibko/močno tipiziranimi programskimi jeziki,
- sposoben načrtovati lastni preprost programski jezik,
- sposoben argumentirati, katera programerska paradigma je bolj primerna za reševanje danega problema.
Predavanja, domače naloge in seminarske naloge. Poseben poudarek je na individualnem delu študentov.
Sprotno preverjanje (seminarske nal.)
Končno preverjanje (pisni ali ustni izpit)
(ocene: 5 (negativno), 6-10 (pozitivno), ob upoštevanju Statuta UL)
OCEPEK, Uroš, RUGELJ, Jože, BOSNIĆ, Zoran. Improving matrix factorization recommendations for examples in cold start. Expert systems with applications, ISSN 0957-4174. [Print ed.], Nov. 2015, vol. 42, no. 19, str. 6784-6794.
BOSNIĆ, Zoran, KONONENKO, Igor. Estimation of individual prediction reliability using the local sensitivity analysis. Appl. intell. (Boston). [Print ed.], Dec. 2008, vol. 29, no. 3, p. 187-203, ilustr.
BOSNIĆ, Zoran, KONONENKO, Igor. Comparison of approaches for estimating reliability of individual regression predictions. Data knowl. eng.. [Print ed.], Dec. 2008, vol. 67, no. 3, p. 504-516
BERDAJS, Jan, BOSNIĆ, Zoran. Extending applications using an advanced approach to DLL injection and API hooking. Software, ISSN 0038-0644, 2010, vol. 40, no. 7, str. 567-584.
BOSNIĆ, Zoran, KONONENKO, Igor. Automatic selection of reliability estimates for individual regression predictions. Knowl. eng. rev., 2010, vol. 25, no. 1, p. 27-47
Celotna bibliografija je dostopna na SICRISu:
http://sicris.izum.si/search/rsr.aspx?lang=slv&,id=31318.