Students will acquire knowledge in advanced algorithmic concepts. They will become familiar with designing efficient algorithms and precise analysis of their complexity.

Learning outcomes - a student will be able to:

- apply studied material for the development of new algorithms and calculate complexity
of these algorithms

- analyze each algorithm and analyze its basic properties (input, output, efficiency,
…)

- argue the importance of sorting algorithms, reproduce and compare sorting
algorithms

- argue advantages and disadvantages of greedy algorithms, support claims on solving
optimization problems (minimum spanning tree, ...)

- distinguish which method of constructing algorithms should be used for
solving particular problems, compare the chosen method
with other methods

- Teacher: Jurica Peric