Programmingwithout knowledge ofalgorithms and data structures(ADS)is like cracking nuts without a hammer - goes slowly and makes you hungry. ADS is about different types of nuts and hammers. Behind nuts hide computational problems, and behind hammers receipts for solving the problems and data storage approaches. If you enjoy programming you will enjoy ADS.

Receipts are rather called algorithms and storage approaches data structures. You will learn algorithms for various practical problems, such as how to quickly multiply, to sort cards, to divide big problems into smaller ones, to greedily pack things into bags and so on - you life will become vivid and simple. You will be introduced to hidden secretes of data structures. You will learn that computer data is not only numbers, strings and arrays, but also stacks, queues, lists, trees, heaps, graphs, etc. You will easily recognize which algorithm is faster and which tree is higher - yours or neighbour's. Even more, you will learn various methods for solving the problems and, finally, how to make an algorithm faster and better than your neighbor. Unless, of course, your neighbor did listen ADS.

"May the source be with you."

When the future programmer passes the first two programming courses is in a similar situation as student who mastered alphabet and grammar of a language to the level, that (s)he can manage to write an essay without mistakes. Unfortunatelly, this is not sufficient to write a good essay and get a good mark. What is the problem? The main problem is the content and the form of the essay. To improve this one needs to read a lot. Now, since there are way too many beautiful books and essays around, one needs to prepare a selection of texts.

Similarly is when one wants to write not only beautiful, but also efficient programs. In the core of this course is exactly the same, learning great data structures and algorithms to understand the mastermind and principles behind them, which will make you better programmers. In this course a special emphasis is given to the challenge how to store and organize data that their manipulation will be more efficient. Hence we will learn about stacks, heaps, strangely coloured trees, cuckoo nests and other strange creatures. However, the emphasis will not be given on learning how the algorithms work, but rather why do they work and what are their limitations. Exactly, what differentiates an average computer scientist from a good and successful one.


Delovna praksa je redna študijska obveznost študenta, saj predstavlja obvezni del prvostopenjskega visokošolsko strokovnega študijskega programa Računalništvo in informatika. Namen delovne prakse je prilagoditi znanje študentov potrebam gospodarstva in javnega sektorja ter jih usposobiti do take mere, da se bodo ob zaposlitvi sposobni produktivno vključiti v delo v podjetjih in ustanovah, le-tem pa dati možnost, da si poiščejo in izoblikujejo svoje bodoče kadre.

Praksa traja 9 tednov neprekinjeno in se izvaja praviloma v poletnem semestru 3. letnika. Poteka pod vodstvom mentorja na fakulteti in mentorja v izbranem podjetju, ustanovi oziroma njihovih oddelkih, katerih področje dela je pretežno računalništvo in informatika. Podjetje oziroma ustanovo, v katerem bo študent opravljal delovno prakso, si študent lahko poišče sam ali pa mu pri tem pomaga koordinator praktičnega izobraževanja na FRI. Medsebojne obveznosti fakultete, študenta in podjetja, ustanove se podrobneje opredelijo s pogodbo o medsebojnem sodelovanju. Vsebino delovne prakse določa program, ki ga za posameznega študenta sestavita mentor na fakulteti in mentor v podjetju oziroma ustanovi. Ob zaključku delovne prakse izdela študent zaključno poročilo o izvedbi posameznih nalog. Poročilo in kvaliteta izvedenih nalog sta osnova za ocenitev uspešnosti  študenta. Oceno prakse poda mentor na fakulteti v sodelovanju z mentorjem v podjetju, ustanovi na osnovi predloženega poročila, podjetje pa izda potrdilo o opravljeni delovni praksi.