Datové struktury I (NTIN066)

Zimní semestr 2026/27 · 2/2 Z + Zk

PoznámkaNote for international students

The English version of this course is taught in the summer semester. Do not enroll in this course in the winter semester.

Přehled

Data Structures I je zásadním kurzem teoretické informatiky zaměřeným na analýzu, návrh a implementaci datových struktur operujících v hlavní paměti. Kurz pokrývá vyhledávací stromy, hešování, sufixová pole a datové struktury v paměťové hierarchii.

Výuka

Přednáška

Termín Místnost Čas
Úterý S3 14:00 – 15:30

Cvičení

Kurz obsahuje paralelní praktika vedená následujícím týmem:

Cvičící Den Čas Místnost
Jirka Fink Úterý 14:00 S3
Pondělí 10:40 S10
Čtvrtek 12:20 S7
Čtvrtek 14:00 S7
Pavel Veselý Středa 9:00 S1
Petr Chmel Pátek 9:00 S1
Tomáš Domes Čtvrtek 15:40 S6

Sylabus přednášek

(Časový rozvrh bude aktualizován v průběhu semestru. Přednáška 17. 11. odpadá — státní svátek.)

  1. R. E. Tarjan — pozvaná přednáška (Matematické kolokvium) (29. 9.)
  2. Úvod, amortizovaná složitost a BB[α]-stromy (6. 10.) slide handout
  3. Splay stromy (13. 10.) slide handout
  4. (a,b)-stromy, B-stromy, Paměťová hierarchie (20. 10.)
  5. Cache-oblivious algoritmy a stránkovací strategie (LRU vs. OPT) (27. 10.)
  6. Úvod do hešování, výběr hešovací funkce (3. 11.)
  7. Další hešovací funkce (10. 11.)
  8. Kolize: separované řetězce, otevřená adresace (24. 11.)
  9. Kukaččí hešování, Bloomovy filtry (1. 12.)
  10. Sufixová pole (8. 12.)
  11. Geometrické datové struktury (15. 12.)
  12. Paralelní datové struktury (5. 1.)

Podmínky zápočtu

Zápočet se uděluje za vypracování domácích úkolů:

  • 7 programovacích úkolů × 10 bodů
  • 3 experimentální úkoly × 15 bodů
  • Podmínka: Celkem min. 75 bodů

Pravidla a další informace najdete na gitu

Materiály a odevzdávání:

  • ReCodEx — odevzdávání úkolů
  • GitLab — repozitář s materiály

Zkouška

Ústní zkouška s písemnou přípravou. Termíny a registrace jsou v SISu.

Varování

Zkontrolujte si den před zkouškou čas příchodu, protože SIS mění harmonogram podle aktuálního počtu přihlášených studentů.

Literatura

Doplňující zdroje

Vstupní předpoklady

Předpokládá se znalost:

  • Programování: Python nebo C/C++, ladění
  • Algoritmy: Základní datové struktury (zásobník, fronta, halda), třídění
  • Pravděpodobnost: diskrétní pravděpodobnost
  • Architektura: Základy počítačových systémů
TipDoporučení

Pokud trávíte hodně času laděním programů, doporučuji souběžně absolvovat Implementace datových struktur (NTIN106) — pokročilé techniky efektivní implementace.