Pogojev za vključitev v delo ni.
Principi programskih jezikov
-
Modeli računanja in paradigme programiranja: imperativno, postopkovno programiranje; deklarativno, nepostopkovno, programiranje; objektno programiranje; funkcijsko programiranje; logično in relacijsko programiranje; programiranje z omejitvami; paralelno programiranje; genetsko programiranje; programiranje s primeri; itd.
-
Pregled programskih jezikov za razne paradigme programiranja
-
Elementi jezikov postopkovnega programiranja
-
Nepostopkovno programiranje, logično programiranje in programski jezik prolog: logika kot programski jezik, postopkovni pomen programa kot avtomatsko dokazovanje izrekov, primeri simboličnega programiranja in deklarativnega snovanja programov
-
Programiranje z omejitvami: ideje, principi in primeri, logično programiranje z omejitvami (CLP)
-
Obravnavanje sintakse in semantike programskih jezikov: gramatike, operativna, prevajalska, denotacijska in aksiomatska semantika
-
Denotacijska semantika, povezava s gramatiko jezika, primeri denotacijskih definicij
-
Aksiomatska semantika in dokazovanje pravilnosti programov: parcialna in totalna pravilnost, invariantni pogoji, tehnike dokazovanja pravilnosti programov, uporaba najšibkejših predpogojev, avtomatsko dokazovanje pravilnosti
- I. Bratko: Prolog programming for artificial intelligence, 2nd ed., Wokingham [etc.] : Addison-Wesley, cop. 1990.
- I. Bratko: Prolog in umetna inteligenca, Ljubljana : Društvo matematikov, fizikov in astronomov SR Slovenije : Zveza organizacij za tehnično kulturo Slovenije, 1989.
- R. Harper: Practical foundations for programming languages, 2nd ed., Cambridge : Cambridge University Press, cop. 2016.
- B. C. Pierce: Types and programming languages, Cambridge (Massachusetts) ; London : The MIT Press, cop. 2002.
- P. Van Roy, S. Haridi: Concepts, techniques, and models of computer programming, Cambridge (Massachusetts) ; London : The MIT Press, cop. 2004.
- R. W. Sebesta: Concepts of programming language, 11th ed., global ed., Harlow [etc.] : Pearson, cop. 2016.
Cilj je predstaviti principe in pregled vrst programskih jezikov, vključno z raznimi modeli računanja, formalnim obravnavanjem sintakse in semantike jezikov ter pravilnosti programov;
Razumevanje različnih vzorcev oz. paradigem programiranja ter njihove uporabe v ustreznih programskih jezikih;
Praktična uporaba simboličnega programiranja, nepostopkovnega programiranja in programiranja z omejitvami.
Znanje in razumevanje:
Razumevanje različnih pristopov k programiranju in primernost raznih pristopov za reševanje raznih problemov;
Pregled principov in mehanizmov raznih vrst programskih jezikov;
Razumevanje načinov za opisovanje sintakse in pomena programskih jezikov ter formalno dokazovanje pravilnosti programov.
Uporaba:
Razvoj spretnosti simboličnega programiranja, programiranja v logiki in programiranja z omejitvami.
Refleksija:
Sposobnost razmišljanja o alternativnih formulacijah problemov ter pristopov k njihovemu reševanju;
Kako različni modeli računanja, paradigme programiranja in vrste jezikov spodbujajo alternativne pristope k računalniškemu reševanju problemov.
Prenosljive spretnosti - niso vezane le na en predmet:
Razširjene spretnosti snovanja programov.
Predavanja, avditorne vaje and exercises, domače naloge.
Način (pisni izpit, ustno izpraševanje, naloge, projekt):
Sprotno preverjanje (domače naloge)
Končno preverjanje (pisni in ustni izpit)
5 - 10, pri čemer velja, da je pozitivna ocena od 6 - 10
BAUER, Andrej, PRETNAR, Matija. Programming with algebraic effects and handlers. V: Journal of logical and algebraic methods in programming : Special Issue on Domains X, International workshop on Domain Theory and applications, Swansea, 5-7 September, 2011, (Journal of logical and algebraic methods in programming, ISSN 2352-2208, Vol. 84, iss. 1, 2015). http://dx.doi.org/10.1016/j.jlamp.2014.02.001
BAUER, Andrej, PRETNAR, Matija. An effect system for algebraic effects and handlers. Logical methods in computer science, ISSN 1860-5974, 2014, vol. 10, iss. 4, paper 9 (str. 1-29). http://arxiv.org/pdf/1306.6316.
BAUER, Andrej, PLOTKIN, Gordon, SCOTT, Dana S. Cartesian closed categories of separable Scott domains. Theoretical computer science, ISSN 0304-3975, 2014, vol. 546, str. 17-29.
BAUER, Andrej, HOFMANN, Martin, KARBYSHEV, Aleksandr. On monadic parametricity of second-order functionals. V: PFENNING, Frank (ur.). Foundations of software science and computation structures : 16th International Conference, FOSSACS 2013, held as part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2013, Rome, Italy, March 16-24, 2013 : proceedings, 16th International Conference on Foundations of Software Science and Computational Structures, FOSSACS 2013, Rome, Italy, March 16-24, 2013, (Lecture notes in computer science, ISSN 0302-9743, 7794). Berlin; Heidelberg: Springer, cop. 2013, str. 225-240. http://dx.doi.org/10.1007/978-3-642-37075-5_15.
BAUER, Andrej, STONE, Christopher A. RZ: a tool for bringing constructive and computable mathematics closer to programming practice. Journal of logic and computation, ISSN 0955-792X, 2009, vol. 19, no. 1, str. 17-43. http://dx.doi.org/10.1093/logcom/exn026
BAUER, Andrej, HÖTZEL ESCARDÓ, Martín, SIMPSON, Alex. Comparing functional paradigms for exact real-number computation. V: WIDMAYER, Peter (ur.). Automata, languages and programming : 29th international colloquium, ICALP 2002, Málaga, Spain, July 8-13, 2002 : proceedings, (Lecture notes in computer science, ISSN 0302-9743, 2380). Berlin; London: Springer, cop. 2002, str. 488-500.