Naziv kolegija: Algoritmi i strukture podataka
Predavač: prof. dr. sc. Zdravko Dovedan Han
ECTS bodovi: 6
Jezik: hrvatski
Trajanje: 1 semestar
Status: obvezan za jednopredmetni studij informacijskih znanosti, izborni za ostale studije
Oblik nastave: 2 sata predavanja + 1 sat vježbi
Uvjeti: nema uvjeta
Ispit: Pismeni i usmeni
Sadržaj:
Uvod: algoritam, oblikovanje i temeljni algoritamski konstrukti; jezici za programiranje: generacije jezika za programiranje, definiranje jezika za programiranje, sintaksa i semantika, tipovi i strukture podataka. Uvod u Python i interaktivni mod: brojčani izrazi; naredba za dodjeljivanje; naredbe za ispis i unos vrijednosti. Pojam programa. Pisanje i izvršavanje programa. Osnovni tipovi podataka: cjelobrojni, realni i logički. Naredba selekcije. Struktura programa sa selekcijom. WHILE petlja. WHILE petlja u interpretaciji „REPEAT“ petlje. Složeni tipovi podataka (1): znak i niz znakova, lista, n-torka. FOR petlja. Datoteke. Složeni tipovi podataka (2): skupovi, mape. Potprogrami: procedure i funkcije. Rekurzivni pozivi procedura i funkcija. Lambda funkcija. Standardni moduli i definiranje vlastitih. Regularni izrazi. Nestandardne strukure podataka: red, stog, jednostruko i dvostuko povezana lista. Stabla. Raspršeno adresiranje. Osnovni algoritmi sortiranja. Pretraživanje.
Sadržaj vježbi:
Izvođenje odabranih primjera programa koji prate teme predavanja i samostalno rješavanje postavljenih problema. Sve se vježbe izvode na računalima.
Cilj – opće i specifične kompetencije:
Studenti će steći temeljna znanja o jednostavnim i dinamičkim strukturama podataka, ovladavat će osnovnim algoritmima i bit će osposobljeni za primjenu stečenih znanja u rješavanju problema primjenom odgovarajućih algoritama i prikladnih struktura podataka, u izabranom jeziku za programiranje (Python).
Ishodi učenja:
Nakon uspješno savladanog predmeta, student će moći:
1) Razumjeti osnovne algoritamske konstrukte.
2) Razlučiti osnovne primitivne i složene tipove podataka.
3) Prepoznati ustroj osnovnih struktura podataka u jezicima za programiranje.
4) Dizajnirati algoritam i izabrati optimalne tipove i strukture podataka u rješavanju složenih problema.
5) Procijeniti efikasnost algoritama sortiranja i pretraživanja.
6) Koristiti napredne tehnike i metodologiju programiranja u ustroju algoritama.
7) Koristiti i prilagoditi programske module drugih autora u pisanju vlastitih programa.
8) Pratiti razvoj jezika za programiranje.
9) Primijeniti stečena znanja u drugim predmetima studija.
Način održavanja nastave:
- Predavanja: kombinirano, klasično (ploča) i prikazom primjera izvedbom na PCu i projiciranjem uz istodobno pisanje primjera programa od strane studenata na svojim računalima.
- Vježbe: rješavanje postavljenih zadataka i pisanje programa na računalu.
Obaveze studenata i uvjeti:
Obvezno pohađanje nastave (predavanja i vježbi).
Način provjere znanja:
Praćenje rada i aktivnosti studenata tijekom semestra:
- provjere znanja (dva parcijalna ispita) – 80 bodova,
- pohađanje predavanja – 10 bodova,
- posebna isticanja na vježbama – do 10 bodova.
Završni ispit:
- Pismeni ispit (samo za one koji nisu ostvarili dovoljan broj bodova tijekom semestra za prolaznu ocjenu ili oni koji žele veću ocjenu) – 80 bodova
- Usmeni ispit - ±20 bodova
Skala ocjena:
dovoljno (2) 50% - 59%
dobro (3) 60% - 69%
vrlo dobro (4) 70% - 79%
izvrsno (5) 80% - 100%
Praćenje kvalitete i uspješnosti predmeta:
Provjera kvalitete i uspješnosti izvedbe predmeta vršit će se kombiniranjem unutrašnje i vanjske evaluacije. Unutrašnju evaluaciju činit će nastavnici i studenti. Evaluacija će se provesti metodom ankete na kraju semestra. Vanjsku evaluaciju realizirat ćemo prisustvovanjem kolega na predmetu i njihovom ocjenom predmeta i nastavnika.
Obvezna literatura:
1. ON-LINE Python v2.7.x documentation
Dopunska literatura:
1. Dovedan Han, Z.: Pascal s tehnikama programiranja (1), VVG, Velika Gorica, 2011.
2. Lutz, M. Programming Python, Fourth Edition by Mark Lutz, O’Reilly Media, 2011.