1. Orientované a neorientované grafy, izomorfismus, podgrafy, pojmy k cestování, souvislost, stupně vrcholů
  2. Hledání nejkratší cesty, Dijkstrův algoritmus
  3. Minimální kostra grafu, Kruskalův algoritmus
  4. Stromy, alternativní definice stromu
  5. Kořenové stromy, vztah mezi výškou, počtem vrcholů a počtem listů

  1. Algoritmus, problém, časová složitost algoritmu v nejhorším a průměrném případě
  2. O-notace a růst funkcí, definice, vlastnosti, příklady použití
  3. Lineární datové struktury - seznam, zásobník, fronta
  4. Problém třídění, rozdělení třídících algoritmů, dolní mez složitosti třídění porovnáváním
  5. Základní metody třídění - insert sort, select sort, bubble sort
  6. Quick sort a jeho složitost
  7. Merge sort a jeho složitost
  8. Heap sort a jeho složitost
  9. Další metody třídění - counting sort, radix sort, bucket sort
  10. Vnější třídění
  11. Pořádkové statistiky

  1. Vyhledávání v lineárních datových strukturách
  2. Binární vyhledávací stromy, operace a jejich složitosti
  3. AVL stromy, operace a jejich složitost
  4. B stromy, operace a jejich složitost
  5. Hashovací tabulky, metody řešení kolizí
  6. Základní grafové algoritmy - průchod do šířky, průchod do hloubky, topologické uspořádání

  1. Přehled a základní rysy programovacích paradigmat - funkcionální, procedurální, objektové
  2. Symbolické výrazy a jejich vyhodnocování v jazyce Common Lisp
  3. Rekurzivní funkce a rekurzivní výpočetní proces
  4. Funkce vyššího řádu
  5. Lexikální a dynamický rozsah platnosti proměnných
  6. Makra
  7. Líné vyhodnocování v datových strukturách, přísliby a proudy
  8. Líné vyhodnocování v programovacích jazycích, aplikativní a normální model vyhodnocení
  9. Zásobníkový model vyhodnocování

  1. Objektově orientované programování - třídy a objekty, zprávy a metody
  2. Zapouzdření, polymorfismus, rozhraní, dědičnost (jednoduchá i vícenásobná)
  3. Pravidlo is-a, princip B. Liskovové, kontraktové programování
  4. OOP založené na prototypech
  5. Příklad jednoho nebo více objektově orientovaných jazyků (Java, C

  1. Relační model databáze - atributy, n-tice, relace, relační proměnné
  2. Relační algebra - množinové operace, restrikce, projekce, přirozené spojení, přejmenování atributů, relační dělení
  3. Operace rozšíření
  4. SELECT výraz v SQL
  5. Kontrola integrity - primární a alternativní klíče, cizí klíče
  6. Funkční závislosti, Boyceho-Coddova normální forma, normalizace
  7. Pohledy - pohledy vSQL, měnitelné pohledy
  8. Agregace - slučování a rozdělování atributů, agregace v SQL