Algoritmid ja andmestruktuurid (ICD0001)
PÕHIANDMED
õppeaine register
A - põhiregister
õppeaine kood
ICD0001
õppeaine nimetus eesti k
Algoritmid ja andmestruktuurid
õppeaine nimetus inglise k
Algorithms and Data Structures
õppeaine maht AP
-
õppeaine maht EAP
6.00
deklareeritav
jah
kontrollivorm
eksam
õpetamise semester
sügis
õppekeel
eesti keel
inglise keel
Eeldusaine(d)
Eeldusaine 1
Java (ICD0019)
Õppekavad, millesse aine kuulub
kavaversiooni kood
aine kohustuslik
IADB17/25
jah
Ainet õpetavad struktuuriüksused
IC - IT kolledž
Ainekaardi link
Tunniplaani link
Vaata tunniplaani
Versioon:
VERSIOONIPÕHISED ANDMED
õppeaine eesmärgid eesti k
Aine rolliks õppekavas on süvendada algoritmilise mõtlemise, analüüsi ning praktilise programmeerimise vilumust.
Õppeaine eesmärgiks on anda õppurile ülevaade algoritmidest ja andmestruktuuridest ning nende realiseerimisest keele Java baasil, samuti tutvustada olulisemaid meetodeid klassikaliste algoritmikaprobleemide lahendamisel, s.h. otsimine ja järjestamine; andmete organiseerimine: pinu, järjekord, ahel, paisktabel, puu, kuhi, graaf; sõnetöötluse algoritmid; rekursioon, ammendav otsing, dünaamiline kavandamine jt. programmeerimistehnikad.
õppeaine eesmärgid inglise k
Role of the course in curricula is to develop algorithmic thinking and programming skills of students, also to deepen their understanding of methods to analyse and solve algorithmic problems.

This course provides an introduction to algorithms and data structures, also their analysis and implementation in Java programming language. It covers techniques for solving common algorithmic problems – searching, sorting, data organization, using recursion, backtracking, dynamic programming, exhaustive search, text algorithms, etc. Classical data structures are presented: linked list, stack, queue, hash table, tree, binary tree, heap, graph, etc.
õppeaine õpiväljundid eesti k.
Kursuse lõpetanu tunneb põhilisi andmestruktuure (pinu, järjekord, puu, graaf, paisktabel, jt.), nende omadusi ning nendega seotud algoritme ja tehnikaid (rekursioon, otsimine, järjestamine, andmestruktuuride läbimine, teede leidmine, dünaamiline kavandamine jt. ). Üliõpilane oskab hinnata algoritmide ajalist ja mahulist keerukust.
Üliõpilane tunneb programmeerimiskeelt Java ning sellega seotud töövahendeid ulatuses, mis lubab andmestruktuure ja algoritme efektiivselt realiseerida. Ta on võimeline koostama ja analüüsima algoritme ülesannete lahendamiseks kursusel käsitletud teemade piires. Üliõpilane oskab vormistada tehnilist aruannet oma individuaalülesande teemal, suudab töötada koos teiste programmeerijatega, tunneb koodistiili ja dokumenteerimise põhitõdesid ning on valmis end täiendama.
õppeaine õpiväljundid ingl k.
Student is familiar with basic data structures (linked list, stack, queue, hash table, tree, binary tree, heap, graph), knows their properties, appropriate terminology and algorithms or techniques related to these structures (traversal methods, path finding, searching, sorting, “greedy” algorithms, recursion, dynamic programming, backtracking, etc.). Student is familiar with basic classical algorithms covered in lectures. Student is able to analyse and estimate the time and space complexity of algorithms.
Student knows the Java programming language and appropriate development tools on the level that allows implementing algorithms and data structures efficiently. Student is able to develop and analyse algorithms for solving problems covered in the course. Student can write a technical report about her individual programming task, knows the coding conventions and principles of documentation.
õppeaine sisu lühikirjeldus eesti k
Algoritmi mõiste, algoritmi omadused. Ajaline ja mahuline keerukus. Funktsioonide asümptootiline hindamine, algoritmianalüüs. Levinumad keerukusklassid.
Otsimine ja järjestamine. Lineaarne otsimine, kahendotsimine, paisktabel. Pistemeetod, kahendpistemeetod, mullimeetod, valikumeetod. Kiirmeetod, ühildamismeetod. Loendamismeetod, positsioonimeetod, kimbumeetod. Järjestamismeetodite võrdlus.
Abstraktsed andmetüübid. Pinu ja järjekord, eelistusjärjekord. Pööratud poola kuju. Ahel, ringahel, topeltseotud ahel. Viidastruktuurid.
Puu. Aritmeetilise avaldise puu. Puu läbimise meetodid (eesjärjestus, lõppjärjestus, keskjärjestus). Puu kujutamisviisid tekstina ja viidastruktuurina. Näited.
Graaf. Suunatud ja suunamata graaf. Multigraaf. Teed ja tsüklid. Lihtgraaf, atsükliline graaf. Tugev ja nõrk sidusus, sidususkomponendid. Maatriksesitused (külgnevusmaatriks ja lühimate teepikkuste maatriks). Graafide korrutamine, liitmine ja sulundid. Graafi kujutusviisid. Algoritmid graafidel: Floyd-Warshalli algoritm, topoloogiline järjestamine, Dijkstra algoritm. Graafi läbimine sügavuti ja laiuti. Sidususkomponentide leidmine, minimaalse toese leidmine.
Rekursioon: Hanoi torn, rekursiooni eemaldamine, sabarekursioon. Ammendav otsing: 8 lipu ülesanne, seljakotiülesanne, harude ja tõkete meetod.
Kahendotsimise puu, AVL puu, värvitud puu. B-puu, binomiaalpuu. Kahendkuhi, kuhjameetod.
Sõnealgoritmid: Knuth-Morris-Pratt, Boyer-Moore, Rabin-Karp.
Kodeerimine ja pakkimine. Huffmani ja Shannon-Fano meetodid. Ahned algoritmid.
Dünaamiline kavandamine, pikima ühise osasõne leidmine.
Algoritmide korrektsus: eel- ja järeltingimused, tsükliinvariandid. Nõrgima eeltingimuse meetod (Hoare'i meetod). Osaline ja täielik korrektsus, peatuvuse probleem.
õppeaine sisu lühikirjeldus ingl k
Algorithms, properties of algorithms, time complexity and space complexity, asymptotic behaviour of functions, analysis of algorithms, complexity classes.
Searching and sorting. Linear search, binary search, hashing. Insertion sort, binary insertion sort, quicksort, merge sort, counting sort, radix sort, bucket sort. Complexity of different methods.
Abstract data types. Stacks and queues. Reverse Polish notation (RPN). Linked lists and other pointer structures.
Trees. Examples of trees - arithmetic expression tree. Traversal of trees – pre-order, post-order, in-order. Forms of expression for trees - parenthetic expressions, pointer structures, textual representation. Examples of "top-down" and "bottom-up" traversal.
Graphs. Directed and undirected graphs, multigraphs. Cyclic and acyclic graphs. Connected components. Strongly connected and weakly connected graphs. Paths and cycles. Simple graphs. Matrices related to graphs: adjacency matrix, matrix of shortest pathlengths. Operations on graphs: sum, multiplication, transitive closure. Representation and implementation of graphs. Algorithms on graphs: Floyd-Warshall (lengths of shortest paths), topological sort of vertices, depth-first and breadth-first traversal, Dijkstra (shortest path), finding connected components, minimal spanning tree.
Recursion: Hanoi towers, elimination of recursion, tail recursion. Exhaustive search: 8 queens problem, knapsack problem, branch and bound method.
Binary search trees, AVL trees, red-black trees, binomial trees. B-trees. Heaps, heapsort.
String algorithms: exact matching (linear, Knuth-Morris-Pratt, Boyer-Moore, Rabin-Karp).
Coding and compressing, coding schemes: Huffman, Shannon-Fano. Greedy algoritms: Huffman encoding.
Dynamic programming: longest common subsequence problem.
Correctness of algorithms: preconditions, postconditions, loop invariants, weakest precondition, structural rules, total correctness and partial correctness, halting problem.
hindamisviis eesti k
-
hindamisviis ingl k
-
iseseisev töö eesti k
-
iseseisev töö ingl k
-
õppekirjandus
Kohustuslik kirjandus (K)
Jüri Kiho. Algoritmid ja andmestruktuurid. Tartu Ülikool, 2003.
Täiendav kirjandus (T)
Michael T. Goodrich, Roberto Tamassia. Data Structures and Algorithms in Java. John Wiley and Sons, Inc.

Kursuse koduleht: http://enos.itcollege.ee/%7ejpoial/algoritmid/
õppevormid ja mahud
päevaõpe: nädalatunnid
3.0
sessioonõppe töömahud (semestris):
loenguid
2.0
loenguid
16.0
praktikume
1.0
praktikume
12.0
harjutusi
0.0
harjutusi
-
vastutav õppejõud
-
ÕPPEJÕU AINEKAVA INFO
õppetöö semester
õpetav õppejõud / üksus
õppetöö keel
Laiendatud ainekava või link Moodle või kodulehele
2025/2026 sügis
Jaanus Pöial, IC - IT kolledž
eesti keel
    ICD0001_Hindamiskriteeriumid.pdf 
    kuva rohkem
    2024/2025 kevad
    Jaanus Pöial, IC - IT kolledž
    eesti keel
      ICD0001_Hindamiskriteeriumid.pdf 
      2024/2025 sügis
      Jaanus Pöial, IC - IT kolledž
      eesti keel
        ICD0001_Hindamiskriteeriumid.pdf 
        2023/2024 kevad
        Jaanus Pöial, IC - IT kolledž
        eesti keel
          ICD0001_Hindamiskriteeriumid.pdf 
          2023/2024 sügis
          Jaanus Pöial, IC - IT kolledž
          eesti keel
            ICD0001_Hindamiskriteeriumid.pdf 
            2022/2023 kevad
            Jaanus Pöial, IC - IT kolledž
            eesti keel
              ICD0001_Hindamiskriteeriumid.pdf 
              2022/2023 sügis
              Jaanus Pöial, IC - IT kolledž
              eesti keel
                ICD0001_Hindamiskriteeriumid_2022.pdf 
                2021/2022 kevad
                Jaanus Pöial, IC - IT kolledž
                eesti keel
                  ICD0001_Hindamiskriteeriumid.pdf 
                  2021/2022 sügis
                  Jaanus Pöial, IC - IT kolledž
                  eesti keel
                    ICD0001_Hindamiskriteeriumid.pdf 
                    2020/2021 kevad
                    Jaanus Pöial, IC - IT kolledž
                    eesti keel
                      ICD0001_Hindamiskriteeriumid.pdf 
                      2020/2021 sügis
                      Jaanus Pöial, IC - IT kolledž
                      eesti keel
                        ICD0001_Hindamiskriteeriumid.pdf 
                        2019/2020 kevad
                        Jaanus Pöial, IC - IT kolledž
                        eesti keel
                          ICD0001_Hindamiskriteeriumid.pdf 
                          2019/2020 sügis
                          Jaanus Pöial, IC - IT kolledž
                          eesti keel
                            ICD0001_Hindamiskriteeriumid.pdf 
                            2018/2019 kevad
                            Jaanus Pöial, IC - IT kolledž
                            eesti keel
                              ICD0001_Hindamiskriteeriumid.pdf 
                              2018/2019 sügis
                              Jaanus Pöial, IC - IT kolledž
                              eesti keel
                                ICD0001_Hindamiskriteeriumid.pdf 
                                Ainekaart eesti keeles
                                Ainekaart inglise keeles