Principi programiranja

Cilj i ishod predmeta

Usvajanje znanja iz naprednih tehnika i veština u analizi, sintezi, dizajnu i implementaciji naprednih algoritama i struktura podataka koišćenjem različitih paradigmi programiranja. Student ume da osmisli i upotrebi složenije algoritme i strukture podataka. Student razume razliku između osnovnih paradigmi programiranja i ume da izabere i upotrebi odgovarajuću u rešavanju konkretnog složenijeg problema programiranja.

Teorijska nastava

Paradigme programiranja: imperativno – proceduralno i objektno-orijentisano, deklarativno – funkcionalno i logičko programiranje. Refleksija. Pregled programskih jezika za svaku paradigmu programiranja. Programski jezici koji podržavaju više paradigmi programiranja. Složene strukture podataka i algoritmi u imperativnom programiranju. Složene strukture podataka i algoritmi u deklarativnom programiranju. Matematički modeli izračunljivosti i veza sa paradigmama programiranja – Tjuringova mašina i Lambda račun. Modularizacija programskog koda.

Praktična nastava

Pregled elemenata funkcionalnog programiranja u nefunkcionalnim programskim jezicima. Refleksija u različitim programskim jezicima. Implementacija složenih struktura podataka korišćenjem objektno- orijentisane paradigme programiranja – balansirana binarna stabla, oktalna stabla, kvadratna stabla, heš tabele, heš stabla, trie. Implementacija složenih struktura podataka u funkcionalnom programiranju – različite vrsta stabala, strukture zasnovane na hešu, grafovi. Implementacija algoritama u imperativnom i funkcionalnom programiranju i njihovo poređenje. Moduli u različitim programskim jezicima.

5733-principi-programiranja