course aims in Estonian
Eesmärgiks on anda teadmised ja vahendid, et leida arvutuslikele probleemidele efektiivne lahendus, rakendades või luues selleks sobilikke algoritme ja andmestruktuure.
course aims in English
The goal of the course is to give knowledge and means to find efficient solution to computational problems using or creating suitable algorithms and data structures.
learning outcomes in the course in Est.
Kursuse läbinud tudeng
* teab ja oskab kasutada klassikalisi algoritme ja andmestruktuure
* tunneb erinevaid algoritmide loomise paradigmasid
* oskus leida enamlevinud arvutuslikele probleemidele sobiva algoritmi ja seda toetavad andmestruktuurid
* tunneb arutusliku keerukuse mõõtusid ja oskab algoritmi keerukust analüüsida
learning outcomes in the course in Eng.
Upon completion of the course a student
* has an understanding and ability to use the classical algorithms and data structures
* knows different paradigms of creating an algorithm
* has ability to find a suitable algorithm and supporting data structures to the computational problem
* has an understanding of the different measures of computational complexity and ability to analyze the complexity of an algorithm
brief description of the course in Estonian
Kursuses käsitletakse mitmesuguseid klassikalisi andmestruktuure nagu järjekorrad, graafid, otsingupuud, paisktabelid, kuhjad jt ning nende ehitust ning rakendusi algoritmides. Uuritakse mitmesuguseid algoritme sorteerimise, andmete-, graafi- ja tekstiotsingu teostamiseks ning keerukate kombinatoorikaülesannete lahendamiseks ning nende algoritmide loomiseks kasutatavaid paradigmasid. Käsitletakse keerukusteooria baasmõisteid nagu asümptootiline keerukus ja klass NP ning erinevaid meetodeid algoritmide keerukuse hindamiseks. Kursuse praktilises osas tuleb lahendada erinevaid ülesandeid ja programmeerida lahendus mitmele, sh ka vähemalt ühele NP-raskele probleemile. Eeldatakse programmeerimisoskust ja arusaamist elementaarstest andmetüüpidest ning -struktuuridest programmeerimise põhikursuse tasemel
brief description of the course in English
Classical data structures: queues, graphs, search trees, hash tables, heaps, their implementation and use in the algorithms. Sorting, data, graph, and text search algorithms. Algorithm design paradigms: greedy, divide and conquer, branch and bound, dynamic programming, meta-heuristics. Introduction to the complexity theory, asymptotic complexity, O-notation, class NP, different methods of complexity analysis. Practice of the course includes programming a solution to different tasks. A programming skill and understanding of the basic data types is assumed.
type of assessment in Estonian
-
type of assessment in English
-
independent study in Estonian
-
independent study in English
-
study literature
R. Neapolitan, K. Naimipour, Foundations of Algorithms 5th edition, 2014
T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Introduction to Algorithms, 2009
J. Kiho, Algoritmid ja andmestruktuurid
study forms and load
daytime study: weekly hours
4.0
session-based study work load (in a semester):