- Nositelj kolegija: Vesna Kalajžić
- Izvođač kolegija: Bernard Miočić
Kroz predmet
studenti se upoznaju s osnovnim algoritmima kao alatima, u širem smislu riječi,
za rješavanje raznoraznih problema u okviru računarstva, informacijskih
sustava, softverskog inženjerstva, bioinformatike, itd. Pored razumijevanja
principa rada algoritama stavljen je naglasak na iznalaženje prikladnog
formuliranja njihovih zapisa koje je moguće implementirati u bilo kojem
programskom jeziku. Kako bi se ipak pokazala i konkretna implementacija
pripadajući kod je prikazan u Java i Python programskim jezicima. U skladu s
tim poželjno je da studenti imaju predznanja iz osnova programiranja. Uzimajući
u obzir da su algoritmi u uskoj vezi sa strukturama podataka, odnosno da
izabrana struktura podataka uvjetuje koje operacije su dozvoljene i na koji
način se one mogu izvesti nad njihovim elementima ili nad strukturom podatka u
cijelosti, to se predstavlja pristup realiziranja apstraktnih struktura
podataka gdje su podaci i algoritmi enkapsulirani zajedno. Bilo kakvo
razmatranje algoritama ne može izostaviti proučavanje pitanja računalne
kompleksnosti. Pod tim pitanjem prvenstveno se izučava vremenska i prostorna
analiza rada algoritama kako na teorijskog razini tako i na praktičnoj
provođenjem simulacijskih eksperimenata performansi algoritama. Sve do sada navedeno
odnosi se na cijeli opseg predmeta koji obuhvaća osnovne apstraktne tipove
podataka (liste, stogove, redove), potom naprednije strukture (grafove i
simboličke tablice), te najvažnije algoritme traženja i sortiranja s tim
strukturama podataka. Na samom kraju obrađuju se algoritmi uz stringove i
najčešće korištene strukture podataka sa stringovima čime se zaokružuje doseg
ovog predmeta.

- Nositelj kolegija: Ante Panjkota
- Nositelj kolegija: Mirko Duić
Sadržaj
predmeta strukturiran je kako bi se studente upoznalo s općim principima i
konceptima objektno-orijentirane paradigme kroz upotrebu programskog jezika
Java. Također je naglasak i na razumijevanju uloge UML dijagrama u modeliranju
objektno-orijentiranih programskih rješenja. Specifičnosti i ograničenja
ugrađenih osnovnih tipova podataka i jednostavnih struktura podataka dovode se
u vezu s projektiranjem vlastitih klasa, uz
isticanje koristi projektiranja s višim razinama apstrakcije kroz
uvođenje sučelja i apstraktnih klasa. Na teorijskoj razini i kroz niz primjera
na vježbama obrađuju se dobre strane učahurivanja, nasljeđivanja i
polimorfizma, te se ujedno obrazlažu osnovna ograničenja tih principa. Studente
se osposobljava i za rad s ulazno/izlaznim tokovima podataka i rad s različitim
tipovima datoteka općenito. Također, obrađuju se principi serijalizacije i
deserijalizacije objekata kako bi se prezentirao osnovni način za pohranu
objekata i njihovog dohvata iz datoteka u okviru OOP. Parametrizacija kao
jednostavan pristup višestrukoj primjeni razvijenih rješenja i primjer
trivijalnog, ali efektivnog način upravljanja promjenama studente uvodi u
naznačenu problematiku kao jedan od važnijih, nezaobilaznih problema u razvoju
suvremenih softverskih rješenja. Na sličnom tragu je upoznavanje s problemom
upravljanja iznimkama, ali i razvojem grafičkih korisničkih sučelja kao
standardu u razvoju današnjih aplikacija. Važan dio predmeta odnosi se na
izradu samostalnog projektnog rješenja za izabrani problem koji zahtjeva i
izradu popratne dokumentacije na što se u predavanjima i vježbama stavlja jak
naglasak, a sve u cilju kako bi studenti što prije počeli stjecati neophodna
znanja i vještine, te kako bi što ranije počeli usvajati najbolje primjere iz
prakse razvoja softverskih rješenja.

- Nositelj kolegija: Ante Panjkota
- Nositelj kolegija: Donata Vidaković