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
Principi programskih jezikov
Robert W. Sebesta, Concepts of Programming Languages, 8th edition, Addison-Wesley 2007.
Peter van Roy, Seif Haridi, Concepts, Techniques, and Models of Computer Programming, MIT Press 2004.
Ivan Bratko, Prolog Programming for Artificial Intelligence, 4th edition, Pearson Education, Addison-Wesley, 2001.
Ivan Bratko, Prolog in umetna inteligenca, Založba FE in FRI, ponatis 2011.
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, praktično delo, avditorne vaje, domače naloge
Sprotno preverjanje (domače naloge)
Končno preverjanje (pisni in ustni izpit)
(ocene: 5 (negativno), 6-10 (pozitivno), ob upoštevanju Statuta UL)
BRATKO, Ivan. Prolog programming for artificial intelligence. 4th ed. Harlow (England) [etc.]: Addison-Wesley: Pearson, cop. 2012. XXI, 673 str., ilustr. ISBN 978-0-321-41746-6. ISBN 0-321-41746-1. [COBISS-SI-ID 8577364]
MOŽINA, Martin, ŽABKAR, Jure, BRATKO, Ivan. Argument based machine learning. Artificial intelligence, ISSN 0004-3702. [Print ed.], 2007, vol. 171, no. 10/15, str. 922-937. [COBISS-SI-ID 6240084]
LUŠTREK, Mitja, GAMS, Matjaž, BRATKO, Ivan. Is real-valued minimax pathological?. Artificial intelligence, ISSN 0004-3702. [Print ed.], 2006, vol. 170, str. 620-642. [COBISS-SI-ID 19805735]
ŠUC, Dorian, VLADUŠIČ, Daniel, BRATKO, Ivan. Qualitatively faithful quantitative prediction. Artificial intelligence, ISSN 0004-3702. [Print ed.], 2004, vol. 158, no. 2, str. [189]-214, ilustr. [COBISS-SI-ID 4422740]
BRATKO, Ivan, MOZETIČ, Igor, LAVRAČ, Nada. Kardio : a study in deep and qualitative knowledge for expert systems. Cambridge (Mass.), London: The MIT Press, 1989. XIV, 260 str., graf. prikazi. ISBN 0-262-02273-7. [COBISS-SI-ID 19925760]