Funkcijsko programiranje

2021/2022
Program:
Interdisciplinarni magistrski študijski program 2. stopnje Računalništvo in matematika
Letnik:
1 letnik
Semester:
prvi
Vrsta:
obvezni
ECTS:
6
Jezik:
slovenski, angleški
Nosilec predmeta:

Zoran Bosnić

Izvajalec (kontaktna oseba):

Zoran Bosnić

Ure na teden – 1. semester:
Predavanja
3
Seminar
0.67
Vaje
1.33
Laboratorij
0
Vsebina

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.

Temeljni literatura in viri
  1. R. Pucella: Notes on Programming SML/NJ, Cornell, 2001
  2. Matthew Flatt, Robert Bruce Findler et al.: The Racket Guide, 2015.
  3. Ravi Sethi: Programming Languages: concepts &, constructs. Addison-Wesley, 1996.
  4. A. Tucker, R. Noonan: Programming Languages: Principles and Paradigms. McGraw-Hill, 2007.
Cilji in kompetence

Š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.

Predvideni študijski rezultati

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.
Metode poučevanja in učenja

Predavanja, domače naloge in seminarske naloge. Poseben poudarek je na individualnem delu študentov.

Načini ocenjevanja

Sprotno preverjanje (seminarske nal.)
Končno preverjanje (pisni ali ustni izpit)
(ocene: 5 (negativno), 6-10 (pozitivno), ob upoštevanju Statuta UL)

Reference nosilca

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.