Funkcijsko programiranje (FRI)

Visokošolski učitelji: Bosnić Zoran
Koda predmeta: 63507



Opis predmeta

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:

Uvod v funkcijsko programiranje.
Pojem okolja, leksikalnega in semantičnega dosega.
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.

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.

Primerjava funkcijskega in objektno usmerjega programiranja.
Vrste tipiziranj (statično/dinamično, močno/šibko, implicitno/eksplicitno) in trdnost/polnost sistema tipov.

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:

  • Znanje in razumevanje: Študent bo poznal in znal uporabljati različne pristope k programiranju v odvisnosti od konkretnih kontekstov.
  • Uporaba: predmet bo študentom predstavljal osnove različnih področij programiranja, ki so aktualne za potrebe računalniške industrije. Predmet bo od študenta poleg prilagajanja različnim paradigmam zahteval tudi hitro učenje različnih jezikov in ga s tem pripravljal na delo v sodobni računalniški industriji.
  • Refleksija: Poleg konkretnih znanj bodo študenti dobili tudi teoretičen pregled nad različnimi področji programiranja, kar jim bo omogočilo tudi boljše prilagajanje potrebam industrije v prihodnosti.
  • Prenosljive spretnosti - niso vezane le na en predmet: Znanje programiranja je potrebno za večino drugih predmetov študija.

Metode poučevanja in učenja:

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





Gradiva

  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.