Visokošolski učitelji: Divjak Saša
Opis predmeta
Pogoji za vključitev v delo oz. za opravljanje študijskih obveznosti:
Vsebina:
Predavanja:
- Programiranje na nivoju zbirnega jezika
- Razvoj programov in razhroščevanje
- Programski jezik C
- Kazalci in dinamične podatkovne strukture: seznami, drevesa
- Iteracija in rekurzija
- Reševanje problemov in algoritmi
- Analiza časovne zahtevnosti algoritmov
- Več o objektno usmerjenem programiranju
- Abstraktni podatkovni tip in kolekcije
- Osnovni abstraktni podatkovni tipi: seznam, množica, vrsta, sklad, preslikava (ter ustrezne kolekcije), generiki
- Zgoščene tabele in binarna iskalna drevesa
- Osnovne implementacije grafov
- Niti in konkurenčno programiranje
- Grafika in animacija
- Programiranje grafičnih aplikacij
- Programiranje mrežnih aplikacij
- Skriptno programiranje
- Abstraktni podatkovni tip drevo; primer: Izrazna drevesa
- Abstraktni podatkovni tip slovar; iskalna drevesa: binarna, AVL, B-drevesa
- Abstraktna podatkovna tipa prioritetna vrsta in disjunktne množice
- Abstraktna podatkovna tipa graf in usmerjeni graf,
- Iskanje najdaljših in najkrajših poti v usmerjenem grafu, minimalno vpeto drevo v neusmerjenem grafu
Vaje:
Na vajah bodo študenti utrjevali snov, ki so jo obravnavali na predavanjih, tako da jo bodo uporabili pri reševanju praktičnih problemov. Pri tem bodo poudarki na samostojnem delu študentov ob pomoči asistentov. Na vajah bodo študenti implementirali več manjših programov (tudi kot domače naloge) ter obsežnejše programe v obliki seminarskih nalog, ki jih bodo zagovarjali na vajah in s tem dobili oceno iz vaj.
Domače naloge:
Namen domačih nalog je ponuditi študentom priložnost za reševanje preprostejših problemov s samostojnim razvojem krajših programov in jih s tem spodbuditi k sprotnemu študiju.
Cilji in kompetence:
Cilj predmeta je razširiti znanje programiranja skozi spoznavanje tehnik programiranja, osnovnih pricipov načrtovanja in analize algoritmov na osnovnih in dinamičnih podatkovnih strukturah.
Predvideni študijski rezultati:
Sposobnost samostojnega razvoja programov, poznavanje osnovnih podatkovnih struktur in algoritmov, sposobnost samostojnega načrtovanja podatkovnih struktur in algoritmov..
Metode poučevanja in učenja:
- Predavanja, domače naloge, seminarski način dela pri vajah.
- Poseben poudarek je na sprotnem študiju in na samostojnem delu pri domačih nalogah, vajah in seminarjih.
Gradiva
- I.Kononenko in sod.: Programiranje in algoritmi, Založba FE in FRI, 2008.
- S. Divjak: Programiranje, elektronska knjiga, http://lgm.fri.uni/lj.si/P2
- B. Eckel: Thinking in Java, 3rd edition, Prentice Hall PTR, 2002
- I.Kononenko in M. Robnik-Šikonja: Algoritmi in podatkovne strukture 1, Založba FE in FRI, 2003
- R. Sedgewick: Algorithms in Java, 3rd edition, Addison Wesley, 2003