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