Za računalničarjevo preživetje v krasnem novem digitalnem svetu je
nujno, da čimprej najde orodjarno in orožarno, ter da si tudi sam izdela
vsaj kakšno bitno sekiro, če že ne laserskega hipersenzoričnega kvantno
sklopljenega lupilca krompirja. Govorimo o algoritmih in podatkovnih
strukturah. To so za računalnikarja orodja, s katerimi realizira svoje,
še tako divje ideje.

Dobro je poznati  pogosto rabljene algoritme
ter preizkušene in uspešne načinov razvoja  novih. Lahko sicer vse na
novo izumimo tudi sami, a kot pravijo modri, se kolesa ne izplača
izumljati na novo pa še čas je zlato, zato se bomo raje postavili na
ramena velikanov. Z višine se vidi več in dalj, zato bomo pri tem
predmetu iskali z in plezali na k-d, R in van Emde Boats drevesa.
Poglobljeno bomo spoznali gramatike, funkcije razprševanja, urejanje s
predpostavkami, hevristične metode reševanja problemov, biološko
navdahnjene metode, računsko geometrijo in linearno programiranje. Da bi
znali algoritme med seboj primerjati in da vedeli, katerih problemov se
je sploh smiselno lotevati, bomo spoznali verjetnostno in amortizirano
analizo algoritmov. In ker imajo dandanašnji procesorji vse več jeder,
jih bomo izkoristili z večnitnimi algoritmi.

Tistim, ki na
prvostopenjskem študiju še niso osvojili dovolj algoritmičnega znanja,
bodo manjkajoče osnove ponujene kot samostojno dodatno delo na začetku
semestra.

Vaje pri predmetu potekajo v obliki reševanja nekaterih
nalog in posvetovanj z asistentom o seminarskem delu (3 seminarske
naloge, 5 spletnih kvizov). Oceno vaj predstavlja skupna ocena
seminarskih nalog, pri vseh pa je potrebno doseči več kot polovico točk.
Pogoj za pozitivno oceno vaj je tudi doseženih polovica vseh točk na
kvizih.

Ocena pri predmetu je sestavljena kot povprečje ocene vaj
in ocene pisnega izpita, pri katerem je potrebno doseči več kot polovico
točk. Oceno je mogoče izboljšati z ustnim izpitom.


This course is held in English language and is oriented towards a practical course project. You will need to know the basic algorithms and data structures, and be ready to program a lot!

The course mark is composed of the coursework (the course project and homework) 50%, and the final exam 50%. To take the exam you need to score at least half of the coursework points. In addition, to pass the course, you need at least half of the final exam points.