Preskoči na glavno vsebino

Principi programskih jezikov

2026/2027
Program:
Interdisciplinarni univerzitetni študijski program 1. stopnje Računalništvo in matematika
Letnik:
2 letnik
Semester:
drugi
Vrsta:
obvezni
ECTS:
6
Jezik:
slovenski
Nosilec predmeta:
Izvajalec (kontaktna oseba):
Ure na teden – 2. semester:
Predavanja
3
Seminar
0
Vaje
0
Laboratorij
2
Vsebina
  • 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

Temeljni literatura in viri
  1. I. Bratko: Prolog programming for artificial intelligence, 2nd ed., Wokingham [etc.] : Addison-Wesley, cop. 1990.
  2. I. Bratko: Prolog in umetna inteligenca, Ljubljana : Društvo matematikov, fizikov in astronomov SR Slovenije : Zveza organizacij za tehnično kulturo Slovenije, 1989.
  3. R. Harper: Practical foundations for programming languages, 2nd ed., Cambridge : Cambridge University Press, cop. 2016.
  4. B. C. Pierce: Types and programming languages, Cambridge (Massachusetts) ; London : The MIT Press, cop. 2002.
  5. P. Van Roy, S. Haridi: Concepts, techniques, and models of computer programming, Cambridge (Massachusetts) ; London : The MIT Press, cop. 2004.
  6. R. W. Sebesta: Concepts of programming language, 11th ed., global ed., Harlow [etc.] : Pearson, cop. 2016.
Cilji in kompetence

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.

Predvideni študijski rezultati

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.

Metode poučevanja in učenja

Predavanja, avditorne vaje and exercises, domače naloge.

Načini ocenjevanja

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

Reference nosilca

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.