Uvod: matematične osnove, modeli računanja in tehnike programiranja, pregled programskih jezikov in izbranega programskega jezika.
Analiza algoritmov: računska zahtevnost algoritmov deli in vladaj, amortizirana analiza algoritmov.
Seznami in skladi: seznami, dvosmerno povezani seznami, krožni seznami, osnovne operacije nad seznami, model sklada, izvedbe sklada, uporaba sklada, obrnjeni poljski zapis.
Drevesa: definicija drevesa, dvojiška drevesa, operacije v drevesih, iskalna drevesa, uravnotežena drevesa, samonastavljiva drevesa, B-drevesa, uporaba dreves.
Razpršene tabele: funkcija razprševanja, trčenja, popolno razprševanje, univerzalno razprševanje.
Vrste in prednostne vrste: model vrste, uporaba vrst, prednostne vrste, dvojiška kopica, leve kopice, izmaknjene kopice, binomske prioritetne vrste, uporaba prednostnih vrst.
Grafi: definicija grafov, usmerjeni in neusmerjeni grafi, predstavitev grafov, problem najkrajše poti, določanje najmanjšega vpetega drevesa, določanje pretoka v omrežju, iskanje v globino, NP-polni problemi.
Tehnike načrtovanja algoritmov: požrešna metoda, deli in vladaj, dinamično programiranje, sestopanje.
Praktični primeri: računalniške komunikacije, vgradne aplikacije, velika podatkovja.
Introduction: mathematical fundamentals, models of computation, and programming techniques, overview of the programming languages and selected programming language.
Algorithm analysis: computational complexity of divide and conquer algorithms, amortized analysis of algorithms.
Lists and stacks: linked list, double linked list, circular list, basic operations on lists, stack model, stack implementation, applications, reverse polish notation.
Trees: definition of tree, binary trees, operations on trees, search tree, balanced trees, self-adjusting trees, B-trees, applications of trees.
Hash tables: hash functions, colisions, perfect hashing, universal hashing.
Queues and priority queues: queue model, queue applications, priority queues, binary heaps, leftist heaps, skew heaps, binomial queues, applications of priority queues.
Graphs: graph definition, directed and undirected graph, graph representation of graphs, shortestpath problem, minimum spanning tree, network flow problem, depth-first search, NPcompleteness.
Algorithm design techniques: greedy algorithms, divide and conquer, dynamic programming, backtracking algorithms.
Practical examples: computer communications, embedded applications, massive data storages.