Programiranje brez poznavanja algoritmov in podatkovnih struktur (APS) je kot trenje orehov brez kladiva - gre bolj počasi, lahko ostaneš lačen. Pri APS bomo za različne vrste orehov spoznavali različna kladiva. Za orehi se seveda skrivajo računalniški problemi, za kladivi pa postopki reševanja problemov in hranjenja podatkov. Če uživate v programiranju, boste po APS še bolj.

Računalniškim postopkom bolj umetelno pravimo tudi algoritmi, načinu hranjenja podatkov pa podatkovne strukture. Spoznali boste algoritme za različne probleme. Tako se boste naučili hitro množiti, urejati karte na sto in en način, iz velikh problemov delati manjše, požrešno zlagati stvari v vrečke in še in še - življenje vam bo postalo popolnoma jasno in enostavno. Razkrite vam bodo dobro varovane skrivnosti podatkovnih struktur. Spoznali boste, da računalniški podatki niso le števila, nizi in tabele, ampak obstajajo tudi skladi, vrste, seznami, drevesa, kopice, grafi itd. Od daleč boste prepoznali, kateri algoritem je hitrejši in katero drevo je višje - vaše ali sosedovo. Še več, spoznali boste različne metode za reševanje življensko pomembnih problemov in nenazadnje naučili se boste napisati hitrejši in lepši algoritem kot sosed. Razen, če seveda vaš sosed ni poslušal APS.

"May the source be with you."without 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."

Ko se bodoči programer prebije čez čeri prvih dveh programerskih predmetov, je podoben šolarju, ki pozna abecedo in slovnico do te mere, da zmore napisati esej brez napak. Kot je verjetno marsikdo (boleče), ugotovil to žal ni dovolj niti za dober spis in za dobro oceno. In v čem je problem? V tem, da je za dober spis potrebna tudi dobra vsebina in oblika in za njuno izboljšanje je preprosto potrebno veliko brati. Ker je dobre literature preprosto preveč, se je smiselno omejiti na izbor kvalitetnih besedil.

Podobno je, ko nekdo želi napisati lep in učinkovit program. Bistvo tega predmeta je več ali manj enako, saj nas želi učiti lepih in učinkovitih podatkovnih struktur in algoritmov, da bomo razumeli znanje in principe, na katerih so zasnovani in bo to iz nas naredilo boljše programerje. Pri tem predmetu je poseben poudarek še izzivu kako shraniti podatke, da bomo z njimi učinkoviteje rokovali. Tako se bomo učili o skladih, kopicah, različno obarvanih drevesih, kukavičjih gnezdih in še o drugih čudnih stvareh. Vendar pomni, poudarek predmeta ni na učenju algoritmov in podatkovnih struktur, ampak na razumevanju zakaj delujejo ter kakšne so njihove meje. Točno to, kar loči povprečnega računalničarja od dobrega in uspešnega računalničarja.


Cilj predmeta je študente seznaniti z osnovami sodobnih metod razvoja programske opreme in inženirskim pristopom k razvoju. Tako se po zaključku študija lažje vključijo v ekipe razvijalcev in vodij projektov, čeprav študij od njih zahteva pretežno samostojno delo in programiranje v malem.

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.