Sadržaj se učitava...
mdi-home Početna mdi-account-multiple Djelatnici mdi-script Studiji mdi-layers Katedre mdi-calendar-clock Raspored sati FOI Nastava search apps mdi-login
Deklarativno programiranje
Declarative Programming
2024/2025
6 ECTSa
Baze podataka i baze znanja 1.4 (BPBZ)
Katedra za teorijske i primijenjene osnove informacijskih znanosti
RI
1. semestar
Osnovne informacijemdi-information-variant Izvođači nastavemdi-account-group Nastavni plan i programmdi-clipboard-text-outline Model praćenjamdi-human-male-board Ispitni rokovimdi-clipboard-check-outline Rasporedmdi-calendar-clock Konzultacijemdi-account-voice
Izvođenje kolegija
Studij Studijski program Semestar Obavezan
Baze podataka i baze znanja 1.4 (BPBZ) 1 obavezan
Cilj kolegija
Cilj predmeta Deklarativno programiranje je upoznavanje studenata s idejom deklarativnog programiranja, njegovim teorijskim osnovama, deklarativnim programskim jezicima i specifičnim alatima. Deklarativno programiranje zauzima važno mjesto u cjelokupnom korpusu programiranja, a temelji se na dva ključna formalizma: predikatnom računu (relacijske baze podataka, logičko programiranje) i lambda računu (funkcijsko programiranje).
Preduvjeti
Kolegij nema definirane preduvjete
Norma kolegija
Predavanja
30 sati
Vježbe u praktikumu
30 sati
Nastavnik Uloga na kolegiju Oblik nastave Tjedana Sati Grupa
Schatten Markus Nositelj Predavanja 15 2 1
Okreša Đurić Bogdan Suradnik Vježbe u praktikumu
Vježbe u praktikumu
14
1
2
2
1
2
Peharda Tomislav Suradnik Vježbe u praktikumu 14 2 1
Sadržaj predavanja
  • Osnovne paradigme programiranja i njihov međuodnos
    Paradigme proceduralnog, objektno-orijentiranog i logičkog programiranja i njihov međuodnos. Područja primjene logičkog programiranja.
  • Pregled svojstava jezika Prolog
    Primjer programa u jeziku Prolog (definiranje obiteljskih veza). Proširenje primjera pravilima. Definicija rekurzivnih pravila. Procedura računanja odgovora na upite (rukovanje varijablama i unifikacija, vraćanje unatrag i rez). Uloga slijeda pravila iz definicije istog predikata.
  • %22Naredbe%22 jezika Prolog
    Ugrađeni predikati kao %22naredbe%22 Prologa. Osnovne klase ugrađenih predikata. Korisnički definirani predikati.
  • Liste i predikati za rad s listama
    Definicija liste i njezinih strukturnih dijelova. Predikati za rad s listama.
  • Operatori i predikati za rad s operatorima
    Ugrađeni aritmetički predikati. Tipovi operatora (infiksni, prefiksni i postfiksni). Prioritet argumenata i shema deklariranja korisnički definiranih operatora.
  • Detaljna %22mehanika%22 rekurzije i reza
    Potreba za generiranjem višestrukih odgovora na upite. Predikat %22rez%22 i načini njegove upotrebe (indikacija izbora valjanog pravila, iznuđivanje (u sprezi s predikatom %22neuspjeh%22) višestrukih odgovora na upit (ciljni predikat) programa i iznuđivanje samo jednog odgovora. Korištenje kombinacije predikata %22rez%22-%22neuspjeh%22. Potencijalni problemi s predikatom %22rez%22.
  • Rukovanje ulazom i izlazom podataka
    Predikati za čitanje i pisanje terma Prologa. Predikati za rad s vanjskim datotekama..
  • Interne baze podataka
    Organizacija internih baza podataka. Ugrađeni predikati za rad s internim bazama podataka (assert, asserta, assertz, retract, retractall).
  • Vanjske baze podataka
    Organizacija vanjskih baza podataka kao B+ stabala. Terminologija (lanci, selektori, referentni indeksi terma, ključevi). Ugrađeni predikati za rad s vanjskom bazom podataka kao cjelinom. Predikati za rad s lancima. Predikati za manipuliranje terminima.
  • Rukovanje greškama i trasiranje programa
    Konceptualno razlikovanje grešaka, iznimaka i iznuđenog prekida rada programa. Predikati za upravljanje programiranim izlazom iz programa. Predikati za trasiranje pojedinačnih predikata. Predikati za izlaz iz programa u nuždi.
  • Specifičnosti jezika XSB Prolog
    Pokretanje programa i izlaz iz programa. Sustav programskih direktorija. Tipovi i ekstenzije internih (programom generiranih) datoteka. Sustav modula i globalna struktura programa. Standardni predikati jezika. Mehanizmi redefiniranja predikata. Direktiva za pozivanje HiLoga.
  • Programski paket Flora-2
    Programski paket Flora-2 CHR Funkcijsko programiranje
  • CHR
    CHR
  • Funkcijsko programiranje
    Funkcijsko programiranje
Sadržaj seminara/vježbi
  • Vježbe
    Kako su programski jezici u stalnim mijenama, izbor adekvatnog logičkog programskog jezika za potrebe vježbi prilično je otežan. Izbor je pao na jezik XSB Prolog, za koji se može reći da predstavlja novu paradigmu logičkog programiranja i ima dobre izglede za daljnji razvoj. Jezgra jezika XSB Prolog poštuje trenutačni ISO standard jezika, a pored toga ima mehanizam tabeliranja parcijalnih odgovora na upit postavljen ciljem programa, u sebi sadrži i programski jezik HiLog, koji ima sintaksu drugog reda (omogućuje kvantificiranje bilo kojih terma, uključujući i predikate, te time omogućuje izravno metaprogramiranje) i semantiku prvog reda, koji sadrži implementaciju F-logike (paket Flora-2), kao i ugrađeni podjezik CHR za rukovanje ograničenjima. Nadalje, programski jezik XSB nije opterećen preobuhvatnim razvojnim okruženjem (alatima za razvoj grafičkih sučelja, itd.), ali se s njima (i drugim programskim jezicima) može vrlo kvalitetno povezati. Tijekom vježbi studenti će ovladati jezgrom jezika XSB Prolog, kao i pripadajućim proširenjima (Flora-2 i CHR), i osposobiti se za samostalno kvalitetno programiranje.
  • Seminari
    U sklopu seminara studenti će napraviti i prezentirati vlastiti projekt primjene logičkog programiranja na rješavanje određenog problema.
Ishodi učenja kolegija
  • Odabrati programske module za rješavanje postavljenog problema prilagođene razvoju aplikacija vezanih uz umjetnu inteligenciju i podatkovnu analitiku.
  • Primijeniti napredne tehnike programiranja poput funkcija drugog reda, generatora sekvenci, asinkronog programiranja, anonimnih funkcija, okidača i pravila, za pristup podacima i pripremu podataka za obradu.
  • Razviti domenski specifični jezik (sintaksa, semantika, pragmatika) za konkretni inteligentni informacijski sustav koristeći tehnike metaprogramiranja (npr. BNF ili Antlr gramatike, konačni automati, pravilni jezici i sl.). sustava deklarativnim programskim jezicima i alatima
  • Razviti prototip inteligentnog informacijskog sustava na temelju velikih skupova podataka koristeći programske jezike i biblioteke za umjetnu inteligenciju i podatkovnu analitiku.
  • Implementirati module inteligentnih informacijskih sustava koristeći programske jezike za umjetnu inteligenciju i podatkovnu analitiku (npr. Python, R, Java, Prolog, Lisp, Matlab, Haskel i sl.).
  • Odabrati tehnike deklarativnog programiranja za rješavanje postavljenog problema u zadanom deklarativnom programskom jeziku.
  • Osmisliti rješenje u deklarativnom programskom jeziku primjenom relacijskog, logičkog, funkcijskog, distribuiranog i/ili meta-programiranja.
  • Oblikovati program koristeći tehnike temeljene na simboličkoj logici i/ili drugim formalizmima (npr. λ-račun, π-račun, gramatike, konačni automati i dr.).
  • Razviti komponente ili aplikaciju koji rješavaju postavljeni problem povezivanjem deklarativnog programiranja i drugih programskih paradigmi.
  • Oblikovati metode metaprogramiranja u deklarativnom programskom jeziku.
Ishodi učenja programa
  • Primijeniti etička načela, zakonsku regulativu i norme koje se koriste u struci
  • Procijeniti uvjete za primjenu suvremenih informacijskih i komunikacijskih tehnologija (IKT), savjetovati druge u primjeni IKT-a te u zadanom kontekstu odrediti utjecaj na pojedinca, organizaciju i društvo.
  • Modelirati probleme iz područja informacijskih i poslovnih sustava korištenjem matematičkih metoda, metoda razvoja informacijskih sustava i koncepata planiranja, upravljanja i poslovanja
  • Analizirati uvjete, donositi odluke, savjetovati druge te primijeniti odluke u zadanom kontekstu rješavanja problema iz područja informacijskih i poslovnih sustava
  • Vrednovati učinkovitost uvođenja i korištenja programskih rješenja i pripadajuće infrastrukture za konkretne problemske domene
  • Voditi interdisciplinarni tim i raditi u takvom timu te razviti planove upravljanja karijerom za sebe i članove tima uključujući elemente cjeloživotnog učenja i razvoj kompetencija poduzetnosti
  • Svrsishodno komunicirati na hrvatskom i stranom jeziku, unaprijediti komunikaciju sa svim dionicima (klijentima, korisnicima i kolegama) uz primjenu odgovarajuće terminologije uključujući popularizaciju suvremenih informatičkih trendova i tema
  • Primijeniti odgovarajuće metode i tehnike projektiranja, planiranja, razvoja i uvođenja složenog informacijskog sustava u suvremenim razvojnim okolinama
  • Optimizirati procese poslovnog sustava organizacije u suradnji sa stručnjacima odabirom metoda i koncepata planiranja, upravljanja organizacijom i analize poslovanja
  • Oblikovati softversku arhitekturu složenog informacijskog sustava, odabrati i postaviti njegovu odgovarajuću tehnološku platformu i sigurnosne mehanizme te programirati dijelove složenog sustava
  • Utvrditi uvjete za primjenu ključnih informacijskih tehnologija, procijeniti njihov učinak i u zadanom kontekstu donositi odluke i davati savjete vezano uz upravljanje IT uslugama i resursima
  • Analizirati uvjete za primjenu, savjetovati i u zadanom kontekstu donositi odluke vezane uz metodološke pristupe razvoju organizacijskih i informacijskih sustava
  • Osmsliti projekt učinkovitog unapređenja poslovnog sustava u osnovnim vertikalnim područjima uz korištenje suvremenih IKT, realizirati takav projekt vlastitim razvojem ili izborom odgovarajućeg standardnog softvera
  • Analizirati objekte poslovnog sustava te postaviti formalni model objektnog sustava kao temelj izgradnje informacijskog sustava.
  • Dizajnirati i izgraditi sustav temeljen na distribuiranim bazama podataka i velikim izvorima znanja korištenjem tehnika izgradnje velikih i distribuiranih podatkovnih sustava i razrješavanja konflikata između kompetitivnih izvora znanja.
  • Izgraditi računalni sustav za pohranu podataka i znanja uključujući digitalne arhive.
  • Predložiti poboljšanja poslovnog sustava temeljem optimiziranog modela poslovnih procesa i poslovnih pravila.
  • Modelirati i izgraditi analitički podatkovni sustav skladišta podataka i višedimenzionalnih kocaka temeljen na postojećem transakcijskom sustavu.
  • Izgraditi i optimizirati model procesa, klasa podataka i poslovnih pravila poslovnog sustava te predložiti poboljšanja poslovnog sustava.
  • Modelirati i izgraditi sustave temeljene na znanju i sustave za podršku u odlučivanju.
  • Identificirati potrebe za strategijskim i upravljačkim promjenama u organizacijama
  • Primijeniti metode upravljanja životnim ciklusom informacijskog sustava organizacije te osmisliti i primijeniti suvremene strategije nastupa na tržištu informatičkih proizvoda i usluga
  • Definirati elemente strategijskog kontinuuma i primijeniti metode strategijskog upravljanja uz potporu informacijsko komunikacijske tehnologije.
  • Razviti i validirati sustav mjerenja organizacijske učinkovitosti uz primjenu IKT
  • Analizirati tržište primjenom informacijsko-komunikacijskih tehnologija
  • Analizirati poslovne procese te preporučiti i primijeniti odgovarajuće informacijske i komunikacijske tehnologije za unapređenje poslovnih procesa
  • Prezentirati razvoj i organizaciju odgojno-obrazovnih sustava, povijest informatike i računarstva, ustroj odgojno-obrazovnog procesa, društvenu uvjetovanost odgojno-obrazovne prakse i primijeniti suvremene odgojno-obrazovne koncepcije
  • Organizirati nastavni proces uključujući i poučavanje upotrebom tehnologije i u kriznim uvjetima te osmisliti postupke za upravljanje procesom učenja i poučavanja uz primjenu odrednica djelovanja i ponašanja ljudske jedinke i dinamike grupe
  • Artikulirati nastavni sat primjenjujući primjerene nastavne metode i oblike rada, didaktičke principe i nastavna sredstva
  • Voditi pedagošku dokumentaciju, ispitivanje, ocjenjivanje i vrednovanje u skladu sa zakonskom regulativom i kriterijima osobne i profesionalne etičnosti
  • Poučavati učenike primjeni različitih oblika učenja, samovrednovanju i samoreguliranom učenju
  • Upravljati razrednim odjeljenjem, i surađivati s roditeljima i drugim strukturama unutar i izvan odgojno-obrazovne institucije
  • Primijeniti i sukreirati suvremene računalne sustave u dizajnu obrazovnog informacijskog sustava u nastavi u skladu s pedagoškim i metodičkim principima te ih popularizirati sukladno trendovima i potrebama
  • Primijeniti principe proceduralnog programiranja, interneta, weba, stolnih aplikacija u kontekstu rješavanja problema iz realnog svijeta
  • Formulirati problem iz realnog svijeta u smislu problemskog zadatka u informatici te ga znati riješiti i rješenje evaluirati
  • Izvoditi proces poučavanja u multikulturalnim i multietničkim sredinama i drugim posebnim uvjetima (treća dob, centri izvrsnosti …)
  • Strukturirati i procjenjivati osobna i profesionalna iskustva (razvijati refleksivnu praksu) uključujući cjeloživotno učenje
Osnovna literatura
  • Bramer, M. (2014). Logic programming with Prolog, 2nd Edition, Springer., odabrana poglavlja
  • Stone, J. D. (2018). Algorithms for Functional Programming. Springer., odabrana poglavlja
  • Čubrilo, M. (1989). Matematička logika za ekspertne sisteme, Informator, Zagreb., odabrana poglavlja
Dopunska literatura
  • Sagonas, K. et al. The XSB System Version 2.7, Volume II: Libraries, Interfaces and Packages. 2004.
  • Canfora, G.; Cimitile, A.; de Carlini, U. A Logic-Based Approach to Reverse Engineering Tools Production, IEEE Tranasctions on Software Engineering. Vol. 18, No. 12, pp. 1053 – 1064., 1992.
  • PDC Prolog version 3.20: User's Guide, Prolog Development Center, Copenhagen, 1990.
  • Nastavna cjelina 2-7. Clocksin, W. F., Mellish, C. S.: Programming in Prolog: Using the ISO Standard (fifth edition), Springer-Verlag, 2003.
  • Nastavna cjelina 8-10. Merrit, D. Adventure in Prolog: Logic Programming Tutorial, Amzi! Inc., 1996.
  • Clocksin, W. F.; Mellish, C. S. Programming in Prolog: Using the ISO Standard (fifth edition). Springer-Verlag, 2003.
  • Nastavna cjelina 11-14. Sagonas, K. and all: The XSB System Version 2.7, Volume I: Programmer's Manual, 2004.
Slični kolegiji
  • University of Sussex (Department of Informatics) http://www.sussex.ac.uk/informatics/G5008.html
  • City University of London (School of Informatics) http://www.city.ac.uk/pgrad/00000894.htm
  • University of Kentucky (College of Engineering) http://cs.engr.uky.edu/CS_Assessment/Course_Descriptions/HTML/CS%20555.htm
  • University of Piraeus (Department of Informatics) http://www.unipi.gr/eng_site/akad_tmhm/plhorf/plhorf_ps_math7.html
  • Imperial College London http://www.doc.ic.ac.uk/teaching/coursedetails/V141
  • The University of Birmingham http://www.cs.bham.ac.uk/~pjh/prolog_course/sem223_se.html
  • Carnegie Mellon University http://www-2.cs.cmu.edu/~fp/courses/95-lp.html
  • University of Leicester (Department of Computer Science) http://www.cs.le.ac.uk/Modules/CO-03-04/CO2014.html
Redoviti studenti Izvanredni studenti
redovni rok
Datum: 14.02.2025.
Opis: u 18:00 na Fakultetu
Prijava do: 11.02.2025. 23:59
Odjava do: 13.02.2025. 11:59
izvanredni rok
Datum: 14.04.2025.
Vrijeme: 16:00
Opis: Na Fakultetu
redovni rok
Datum: 24.06.2025.
Opis: u 18:00 na Fakultetu
Prijava do: 21.06.2025. 23:59
Odjava do: 23.06.2025. 11:59
redovni rok
Datum: 28.08.2025.
Opis: u 18:00 na Fakultetu
Prijava do: 25.08.2025. 23:59
Odjava do: 27.08.2025. 11:59
U kalendaru ispod se nalaze konzultacije predmetnih nastavnika, no za detalje o konzultacijama možete provjeriti na profilu pojedinog predmetnog nastavnika.
2024 © Fakultet organizacije i informatike, Centar za razvoj programskih proizvoda