To survive in the brave new digital world students have to get acquainted with the programming toolbox and make at least a byte shovel. The word is about algorithms
and data structures, which in computer science are basic tools to transfer
ideas and dreams into reality.

If one
does not want to reinvent the wheel, it is wise to know at least the frequently
used algorithms and some well tested and successful methods for development of
new algorithms. In general, it seems that standing on the shoulders of giants
is the best strategy for a quick progress. In high altitude one sees farther, so one should know about spatial data structures and climb the k-d, R, and van Emde-Boats trees. The course will drop
comparison sort and make some assumptions to sort in linear time. Standard
toolbox includes algorithms from computational geometry and use of linear
programming and hash functions. When exact methods do not work, local search, heuristic problem solving and
biologically inspired methods can be a solution. Knowing what tool (algorithm) to use in which
circumstances is also essential, so one has to compare different algorithms. Will my
new algorithm run a few seconds, a few minutes, or a few millennia? The
course will offer a way to answer these questions through the analysis of
computational complexity, in particular with probabilistic and amortized analysis.
Luckily, nowadays processors have more and more cores, so knowledge of parallel and distributed algorithms comes handy.

students who haven’t learnt enough of algorithms in their first degree study will be offered additional contents as a self-study at the beginning of the semester.

Practical part is in the form of programming assignments, solving problems, and web quizzes. Assistant is available for consultations. The grade of practical work is a joint grade of three assignments, which have to be finished on time and graded with at least 50% of points. The precondition for passing practical work is achieving at least 50% of points in web quizzes.

The final course grade consists of practical work grade (50%) and written exam (50%), in both parts one has to achieve at least 50% of points. Oral exam is optional.