Informatika se zaměřením na vzdělávání
Tato stránka vychází z podkladů pro tištěné studijní plány (tzv. Karolinku).
Studijní plány 2024/2025 najdete zde.
Doporučený průběh studia
Předměty povinné jsou vytištěny tučně, povinně volitelné předměty normálním písmem, doporučené volitelné předměty kurzívou.
Hlavní studijní plán (maior)
1. rok studia
kód | Předmět | Kredity | ZS | LS | |
NDMI002 | Diskrétní matematika | 5 | 2/2 Z+Zk | — | |
NPRG062 | Algoritmizace | 4 | 2/1 Z+Zk | — | |
NPRG030 | Programování 1 | 5 | 2/2 Z | — | |
NMTM110 | Informační technologie pro učitele | 3 | 1/2 KZ | — | |
NTVY014 | Tělesná výchova I | 1 | 1 | 0/2 Z | — |
NJAZ070 | Anglický jazyk pro středně pokročilé I | 2 | 1 | 0/2 Z | — |
NTIN060 | Algoritmy a datové struktury 1 | 5 | — | 2/2 Z+Zk | |
NPRG031 | Programování 2 | 5 | — | 2/2 Z+Zk | |
NUIN022 | Proseminář z matematiky | 3 | 2 | — | 0/2 Z |
NTVY015 | Tělesná výchova II | 1 | 1 | — | 0/2 Z |
NJAZ072 | Anglický jazyk pro středně pokročilé II | 2 | 1 | — | 0/2 Z |
1 Místo jednoho z předmětů NTVY014, NTVY015, NTVY016, NTVY017 je možné si zapsat letní výcvikový kurz NTVY018 nebo zimní výcvikový kurz NTVY019. Tyto kurzy může student absolvovat kdykoli v průběhu studia.
2 Výuka anglického jazyka NJAZ070, NJAZ072 v rozsahu 0/2 v každém semestru je určena pro středně pokročilé a pokročilé. Pro začátečníky a mírně pokročilé jsou určeny předměty NJAZ071, NJAZ073 s rozsahem výuky 0/4 v každém semestru.
3 Předmět není povinný pro posluchače, kteří zahájili studium před rokem 2022.
2. rok studia
kód | Předmět | Kredity | ZS | LS | |
NUIN021 | Algoritmy a automaty pro učitele | 5 | 2/2 Z+Zk | — | |
NSWI120 | Principy počítačů | 3 | 2/0 Zk | — | |
NSWI141 | Úvod do počítačových sítí | 3 | 2/0 KZ | — | |
NDIN011 | Aplikační software | 4 | 2/1 KZ | — | |
NTVY016 | Tělesná výchova III | 1 | 1 | 0/2 Z | — |
NJAZ074 | Anglický jazyk pro středně pokročilé III | 2 | 1 | 0/2 Z | — |
NSWI170 | Počítačové systémy | 5 | — | 2/2 Z+Zk | |
NSWI177 | Úvod do Linuxu | 4 | — | 1/2 KZ | |
NDIN019 | Dětské programovací jazyky | 4 | — | 1/2 Z | |
NTVY017 | Tělesná výchova IV | 1 | 1 | — | 0/2 Z |
NJAZ090 | Anglický jazyk pro středně pokročilé IV | 2 | 1 | — | 0/2 Z |
NJAZ091 | Anglický jazyk — zkouška pro bakaláře | 3 | 1 | 0/0 Zk | 0/0 Zk |
1 Místo jednoho z předmětů NTVY014, NTVY015, NTVY016, NTVY017 je možné si zapsat letní výcvikový kurz NTVY018 nebo zimní výcvikový kurz NTVY019. Tyto kurzy může student absolvovat kdykoli v průběhu studia.
2 Výuka anglického jazyka NJAZ074, NJAZ090 v rozsahu 0/2 v každém semestru je určena pro středně pokročilé a pokročilé. Pro začátečníky a mírně pokročilé jsou určeny předměty NJAZ075, NJAZ089 s rozsahem výuky 0/4 v každém semestru.
3 Povinnou zkoušku z anglického jazyka NJAZ091 je možné absolvovat v ZS nebo v LS.
3. rok studia
kód | Předmět | Kredity | ZS | LS | |
NDBI025 | Databázové systémy | 5 | 2/2 Z+Zk | — | |
NUIN018 | Vývoj počítačových her — pro učitele | 4 | 2/1 KZ | — | |
NPEP301 | Úvod do psychologie | 3 | 2/0 Zk | — | |
NSWI090 | Počítačové sítě | 1 | 3 | — | 2/0 Zk |
NAIL120 | Úvod do umělé inteligence | 2 | 5 | — | 2/2 Z+Zk |
NPEP302 | Pedagogická propedeutika | 3 | — | 0/2 Z | |
NSZZ031 | Vypracování a konzultace bakalářské práce | 6 | — | 0/4 Z | |
NDIN006 | Pedagogická praxe z informatiky 1 | 2 | 1 týden Z | ||
Povinně volitelné předměty | 4 |
1 Předmět není povinný pro posluchače, kteří zahájili studium v roce 2022 nebo později.
2 Předmět není povinný pro posluchače, kteří zahájili studium před rokem 2022.
Povinně volitelné předměty (minimálně 4 kredity)
kód | Předmět | Kredity | ZS | LS | |
NPEP601 | Rétorika a komunikace s lidmi I | 2 | 0/2 Z | — | |
NPEP602 | Sociální dovednosti a práce s lidmi I | 2 | 0/2 Z | — | |
NPEP603 | Rétorika a komunikace s lidmi II | 2 | — | 0/2 Z | |
NPEP604 | Sociální dovednosti a práce s lidmi II | 2 | — | 0/2 Z |
Doporučené volitelné předměty
kód | Předmět | Kredity | ZS | LS | |
NMIN201 | Programování 3 | 5 | 2/2 Z+Zk | — | |
NPRG013 | Programování v jazyce Java | 5 | 2/2 Z+Zk | — | |
NPRG035 | Programování v jazyce C# | 5 | 2/2 Z+Zk | — | |
NAIL028 | Úvod do robotiky | 5 | 2/2 Z+Zk | — | |
NPFL012 | Úvod do počítačové lingvistiky | 3 | 2/0 Zk | — | |
NPRG036 | Datové formáty | 5 | 2/2 Z+Zk | — | |
NPED045 | Multimediální vzdělávání v pojetí psychologického výzkumu | 3 | 1/1 KZ | — | |
NPRG005 | Neprocedurální programování | 5 | — | 2/2 Z+Zk | |
NAIL120 | Úvod do umělé inteligence | 1 | 5 | — | 2/2 Z+Zk |
NDBI046 | Úvod do datového inženýrství | 5 | — | 2/2 Z+Zk | |
NPRG003 | Metodika programování a filozofie programovacích jazyků | 3 | — | 2/0 Zk | |
NPRG045 | Ročníkový projekt | 4 | — | 0/1 Z |
1 Předmět je povinný pro posluchače, kteří zahájili studium v roce 2022 nebo později.
Přidružený studijní plán (minor)
1. rok studia
kód | Předmět | Kredity | ZS | LS | |
NDMI002 | Diskrétní matematika | 5 | 2/2 Z+Zk | — | |
NPRG062 | Algoritmizace | 4 | 2/1 Z+Zk | — | |
NPRG030 | Programování 1 | 5 | 2/2 Z | — | |
NTIN060 | Algoritmy a datové struktury 1 | 5 | — | 2/2 Z+Zk | |
NPRG031 | Programování 2 | 5 | — | 2/2 Z+Zk | |
NUIN022 | Proseminář z matematiky | 1 | 2 | — | 0/2 Z |
1 Předmět není povinný pro posluchače, kteří zahájili studium před rokem 2022.
2. rok studia
kód | Předmět | Kredity | ZS | LS | |
NUIN021 | Algoritmy a automaty pro učitele | 5 | 2/2 Z+Zk | — | |
NSWI120 | Principy počítačů | 3 | 2/0 Zk | — | |
NSWI141 | Úvod do počítačových sítí | 3 | 2/0 KZ | — | |
NDIN011 | Aplikační software | 4 | 2/1 KZ | — | |
NSWI170 | Počítačové systémy | 5 | — | 2/2 Z+Zk | |
NSWI177 | Úvod do Linuxu | 4 | — | 1/2 KZ | |
NDIN019 | Dětské programovací jazyky | 4 | — | 1/2 Z |
3. rok studia
kód | Předmět | Kredity | ZS | LS | |
NDBI025 | Databázové systémy | 5 | 2/2 Z+Zk | — | |
NUIN018 | Vývoj počítačových her — pro učitele | 4 | 2/1 KZ | — | |
NSWI090 | Počítačové sítě | 1 | 3 | — | 2/0 Zk |
NAIL120 | Úvod do umělé inteligence | 2 | 5 | — | 2/2 Z+Zk |
NDIN006 | Pedagogická praxe z informatiky 1 | 2 | 1 týden Z |
1 Předmět není povinný pro posluchače, kteří zahájili studium v roce 2022 nebo později.
2 Předmět není povinný pro posluchače, kteří zahájili studium před rokem 2022.
Doporučené volitelné předměty
kód | Předmět | Kredity | ZS | LS | |
NMIN201 | Programování 3 | 5 | 2/2 Z+Zk | — | |
NPRG013 | Programování v jazyce Java | 5 | 2/2 Z+Zk | — | |
NPRG035 | Programování v jazyce C# | 5 | 2/2 Z+Zk | — | |
NAIL028 | Úvod do robotiky | 5 | 2/2 Z+Zk | — | |
NPFL012 | Úvod do počítačové lingvistiky | 3 | 2/0 Zk | — | |
NPRG036 | Datové formáty | 5 | 2/2 Z+Zk | — | |
NPED045 | Multimediální vzdělávání v pojetí psychologického výzkumu | 3 | 1/1 KZ | — | |
NPRG005 | Neprocedurální programování | 5 | — | 2/2 Z+Zk | |
NAIL120 | Úvod do umělé inteligence | 1 | 5 | — | 2/2 Z+Zk |
NDBI046 | Úvod do datového inženýrství | 5 | — | 2/2 Z+Zk | |
NPRG003 | Metodika programování a filozofie programovacích jazyků | 3 | — | 2/0 Zk | |
NPRG045 | Ročníkový projekt | 4 | — | 0/1 Z |
1 Předmět je povinný pro posluchače, kteří zahájili studium v roce 2022 nebo později.
Požadavky znalostí ke státní závěrečné zkoušce z informatiky (zahájení studia před rokem 2022)
1. Algoritmy a datové struktury
Časová složitost algoritmů: čas a prostor výpočtu pro konkrétní vstup, časová
a prostorová složitost algoritmu, složitost v nejlepším, nejhorším
a průměrném případě, asymptotická notace. Třídy složitosti: třídy P a NP,
převoditelnost problémů, NP-těžkost a NP-úplnost, příklady NP-úplných problémů a převodů
mezi nimi.
Metoda "rozděl a panuj": princip rekurzivního dělení problému na podproblémy, výpočet složitosti pomocí rekurentních rovnic, kuchařková věta (Master theorem), aplikace (Mergesort, násobení dlouhých čísel, Strassenův algoritmus). Dynamické programování.
Binární vyhledávací stromy: definice vyhledávacího stromu, operace s nevyvažovanými stromy, AVL stromy (jen definice). Haldy: binární halda. Hešování: hešování s přihrádkami, otevřená adresace.
Třídění: primitivní třídicí algoritmy (Bubblesort, Insertsort apod.), třídění haldou (Heapsort), Quicksort, dolní odhad složitosti porovnávacích třídicích algoritmů, přihrádkové třídění čísel a řetězců.
Grafové algoritmy: prohledávání do šířky a do hloubky, detekce komponent souvislosti, topologické třídění orientovaných grafů, nejkratší cesty v ohodnocených grafech (Dijkstrův algoritmus), minimální kostra grafu (Kruskalův, Jarníkův a Borůvkův algoritmus), toky v sítích (algoritmus Fordův-Fulkersonův).
Algoritmy vyhledávání v textu. Algebraické algoritmy: Eukleidův algoritmus.
2. Programovací jazyky
Typické prostředky programovacích jazyků.
Pojmy a principy objektového návrhu: třídy, rozhraní, metody, atributy, dědičnost, vícenásobná dědičnost a její problémy, polymorfismus,
primitivní typy vs. objekty (implementace primitivních typů, paměťová reprezentace
složených typů a objektů), implementace virtuálních metod (tabulka virtuálních metod),
životnost objektů (alokace objektů statická, na zásobníku, na haldě),
konstruktory, explicitní delete/dispose, garbage collector,
výjimky (šíření a odchytávání výjimek: try-catch-finally). Oddělený překlad, sestavení, řízení
překladu: kompilace vs. interpretace, role sestavení.
Neprocedurální programování, logické programování.
3. Automaty a jazyky
Regulární jazyky: konečný automat, jazyk přijímaný konečným automatem, deterministický,
nedeterministický, lambda přechody, regulární výrazy, Kleeneho věta, iterační (pumping) lemma pro konečné automaty, Nerodova věta, regulární gramatiky.
Bezkontextové jazyky: bezkontextová gramatika, jazyk generovaný gramatikou, zásobníkový automat, třídy jazyků přijímaných nedeterministickými a deterministickými zásobníkovými automaty.
Turingův stroj: gramatika typu 0, diagonální jazyk, univerzální jazyk.
Chomského hierarchie: určení ekvivalence či inkluze tříd jazyků generovaných výše uvedenými automaty a gramatikami, schopnost zařazení konkrétního jazyka do Chomského hierarchie (zpravidla sestrojení odpovídajícího automatu či gramatiky a důkaz iteračním lemmatem, že jazyk není v nižší třídě).
4. Databáze
Podstata a architektury databázových systémů. Konceptuální, logická a fyzická úroveň pohledů na data, B-stromy a jejich varianty. Relační datový model, relační algebra, normální formy, referenční integrita. Základy jazyka SQL. Transakční zpracování, vlastnosti transakcí.
5. Architektury počítačů, operačních systémů a sítí
Reprezentace dat: kódování a způsob uložení dat v paměti, bitové operace a jejich
využití.
Organizace počítače: von Neumannova a harvardská architektura, operační a sekundární paměti, adresové prostory, vstupně/výstupní zařízení. Architektura počítače: typické architektury, instrukce procesoru, běžné konstrukce vyššího programovacícho jazyka a jejich reprezentace pomocí instrukcí, základní představa o SMP multiprocesoru se sdílenou pamětí.
Operační systémy: boot počítače a operačního systému, jádro OS, ovladače zařízení, privilegovaný a neprivilegovaný režim CPU, rozhraní mezi OS a programovacím jazykem, správa uživatelů a jejich oprávnění. Rozhraní HW a OS: ovladače zařízení a driver stack, obsluha přerušení na úrovni CPU a OS, výjimky procesoru a jejich obsloužení a vazba na runtime programovacího jazyka. Procesy a vlákna: kontext procesu a vlákna, kooperativní a preemptivní multitasking, plánování, typické stavy vlákna, aktivní vs. pasivní čekání. Race condition, kritická sekce, vzájemné vyloučení, synchronizační primitiva, deadlock a livelock (znalost konceptu). Typická rozhraní pro přístup a práci se soubory a sockety, file descriptory, použití souborového API pro přístup k zařízením v OS, standardní vstup a výstup a jejich přesměrování, roury (pipes) jako meziprocesová komunikace.
Bezpečnost, autentifikace, autorizace, přístupová práva. ISO/OSI vrstevnatá architektura sítí. TCP/IP. Spojované a nespojované služby, spolehlivost, zabezpečení protokolů.
Požadavky znalostí ke státní závěrečné zkoušce z informatiky (zahájení studia v roce 2022 nebo později)
1. Algoritmy a datové struktury
Časová složitost algoritmů:
- – Definovat čas a prostor výpočtu pro konkrétní vstup, časovou a prostorovou složitost algoritmu (v nejlepším, nejhorším a průměrném případě). Vysvětlit, v jakých jednotkách se čas a prostor měří.
- – Umět stanovit časovou a prostorovou složitost algoritmu.
- – Definovat asympotickou notaci (O, Omega, Theta) a použít ji pro zápis složitosti. Vysvětlit motivaci použití asymptotiky.
- – Umět stanovit časovou a prostorovou složitost algoritmu.
Základní algoritmy s čísly:
- – Vysvětlit Eukleidův algoritmus, Hornerovo schéma a Eratosthenovo síto.
- – Vysvětlit algoritmy pro test prvočíselnosti, prvočíselný rozklad a vyčíslení výrazu.
Třídění:
- – Vysvětlit primitivní třídicí algoritmy (Bubblesort, Insertsort apod.).
- – Definovat haldu a vysvětlit, jak se použije pro třídění (Heapsort).
- – Vysvětlit rekurzivní třídicí algoritmy Mergesort a Quicksort.
- – Srovnat složitost jednotlivých třídicích algoritmů.
- – Vysvětlit dolní odhad složitosti porovnávacích třídicích algoritmů a jeho důkaz.
- – Vysvětlit myšlenku přihrádkového třídění a ukázat, jak se používá pro čísla a řetězce.
- – Definovat haldu a vysvětlit, jak se použije pro třídění (Heapsort).
Grafové algoritmy:
- – Ukázat různé způsoby reprezentace grafu v paměti.
- – Vysvětlit prohledávání grafů do šířky a do hloubky. Ukázat, jak jejich složitost závisí na reprezentaci grafu. Uvést, jak se prohledáním grafu zjistí komponenty souvislosti.
- – Definovat topologické uspořádání orientovaného grafu a ukázat, jak ho efektivně nalézt.
- – Vysvětlit algoritmy pro nejkratší cesty v ohodnocených grafech (Dijkstrův algoritmus) a minimální kostru grafu (Kruskalův, Jarníkův a Borůvkův algoritmus).
- – Definovat tok v síti, vysvětlit algoritmus na nalezení maximálního toku (Fordův-Fulkersonův) a důkaz jeho korektnosti.
- – Vysvětlit prohledávání grafů do šířky a do hloubky. Ukázat, jak jejich složitost závisí na reprezentaci grafu. Uvést, jak se prohledáním grafu zjistí komponenty souvislosti.
Datové struktury:
- – Definovat binární vyhledávací strom, vysvětlit operace s nevyvažovanými stromy a problémy s degenerací stromu. Definovat AVL strom a naznačit, jak pomůže.
- – Definovat binární haldu a vysvětlit operace s ní.
- – Vysvětlit princip hešování, demonstrovat ho na hešování s přihrádkami a otevřené adresaci.
- – Definovat binární haldu a vysvětlit operace s ní.
Metoda ”rozděl a panuj”:
- – Vysvětlit princip rekurzivního dělení problému na podproblémy.
- – Vysvětlit metody výpočtu složitosti rekurzivních algoritmů pomocí rekurentních rovnic, úvahou o stromu rekurze a kuchařkovou větou (Master theorem).
- – Ukázat aplikace (Mergesort, násobení dlouhých čísel, Strassenův algoritmus) a umět spočítat jejich složitost.
- – Vysvětlit metody výpočtu složitosti rekurzivních algoritmů pomocí rekurentních rovnic, úvahou o stromu rekurze a kuchařkovou větou (Master theorem).
Dynamické programování:
- – Vysvětlit princip řešení podproblémů od nejmenších k největším.
- – Ukázat příklady algoritmů založených na dynamickém programování.
Algoritmy vyhledávání v textu:
- – Zavést základní pojmy týkající se řetězců: abeceda, slovo, podslovo, prefix a suffix.
- – Vysvětlit vyhledávání v textu pomocí automatu (algoritmy Knuth-Morris-Pratt a Aho-Corasicková).
Třídy složitosti:
- – Vysvětlit třídy rozhodovacích problémů P a NP.
- – Vysvětlit převoditelnost problémů, NP-těžkost a NP-úplnost.
- – Uvést příklady NP-úplných problémů a převodů mezi nimi.
- – Vysvětlit převoditelnost problémů, NP-těžkost a NP-úplnost.
2. Programování
Programovací jazyky:
- – vysvětlit, k čemu potřebujeme programovací jazyky, jaké jsou základní stavební prvky (procedurálního) programovacího jazyka
- – popsat rozdíl mezi staticky a dynamicky typovanými jazyky, uvést příklady implicitní a explicitní konverze typů, určit rozsah viditelnosti a platnosti konkrétní proměnné v programu
- – popsat různé způsoby předávání parametrů a jejich výhody
- – navrhnout sadu testů pro funkci zadanou zkoušejícím
- – určit, které proměnné jsou primitivní (hodnotové typy) a které objektové (referenční typy) a vědět, k jakým chybám může vést jejich nerozlišování (více odkazů na tentýž objekt)
- – určit, které proměnné v konkrétním kódu jsou alokovány staticky, které na zásobníku a které na haldě
- – navrhnout rozklad řešení úlohy zadané zkoušejícím na funkce, na moduly a na objekty
- – popsat význam konstruktoru, destruktoru a garbage-collectoru
- – popsat rozdíl mezi staticky a dynamicky typovanými jazyky, uvést příklady implicitní a explicitní konverze typů, určit rozsah viditelnosti a platnosti konkrétní proměnné v programu
Programování počítačových her:
- – popsat danou konkrétní hru z pohledu programátora a identifikovat v ní jednotlivé prvky: scény, kamery, světla, herní objekty; popsat vlastnosti herních objektů týkající se jejich zobrazování a chování (kolize, fyzika, skripty)
- – porozumět jednoduchému konkrétnímu skriptu pro herní objekt
- – vypracovat a vysvětlit návrh pro konkrétní danou hru
- – porozumět jednoduchému konkrétnímu skriptu pro herní objekt
3. Základy teoretické informatiky
Konečné automaty:
- – Definovat konečný automat, jeho výpočet a jazyk přijímaný automatem.
- – Vysvětlit princip nedeterministického automatu a lambda-přechodů. Ukázat ekvivalenci takto rozšířených automatů s původním deterministickým automatem.
- – Vysvětlit regulární výrazy a ukázat, že generují přesně regulární jazyky (Kleeneho věta).
- – Umět sestrojit automat a regulární výraz pro zadaný jazyk.
- – Vysvětlit princip nedeterministického automatu a lambda-přechodů. Ukázat ekvivalenci takto rozšířených automatů s původním deterministickým automatem.
Gramatiky:
- – Definovat regulární a bezkontextovou gramatiku a jazyk generovaný gramatikou.
- – Vysvětlit algoritmus pro příslušnost slova do bezkontextového jazyka (například algoritmus CYK).
- – Umět sestrojit gramatiku pro zadaný jazyk.
- – Vysvětlit algoritmus pro příslušnost slova do bezkontextového jazyka (například algoritmus CYK).
Turingovy stroje:
- – Definovat Turingův stroj, jeho výpočet a jazyk přijímaný a rozpoznávaný strojem.
- – Vysvětlit rozhodnutelné a částečně rozhodnutelné jazyky a vyčíslitelné funkce.
- – Vysvětlit univerzální Turingův stroj a diagonální jazyk.
- – Ukázat příklady jazyků, které nejsou rozhodnutelné nebo částečně rozhodnutelné (problém zastavení). Ukázat, jak se může lišit rozhodnutelnost jazyka a jeho doplňku (Postova věta).
- – Umět sestrojit Turingův stroj rozhodující daný jazyk.
- – Vysvětlit rozhodnutelné a částečně rozhodnutelné jazyky a vyčíslitelné funkce.
4. Databáze a práce s daty
Základy reprezentace dat:
- – Vysvětlit rozdíl mezi informacemi a daty.
- – Vysvětlit rozdíl mezi datovým modelem a datovým formátem. Znát základní zástupce datových modelů (relační, grafový a dokumentový) a datových formátů (CSV, XML, JSON).
- – Vysvětlit pojem otevřených dat a roli katalogů dat při vyhledávání existujících dat.
- – Vysvětlit co je konceptuální model a ukázat příklad konceptuálního modelu v podobě ER diagramu nebo UML diagramu tříd. Z příkladu odvodit schéma relační databáze.
- – Vysvětlit rozdíl mezi datovým modelem a datovým formátem. Znát základní zástupce datových modelů (relační, grafový a dokumentový) a datových formátů (CSV, XML, JSON).
Jazyk SQL:
- – Pomocí SQL vytvořit dvě tabulky s několika sloupci a definovat pro ně základní integritní omezení (primární klíče, cizí klíč v jedné tabulce na jinou tabulku) a pomocí SQL naplnit daty.
- – Pomocí SQL vyfiltrovat řádky a sloupce z tabulek dle zadaných kritérií, pomocí SQL umět obě definované tabulky spojit.
Architektury databázových systémů:
- – Vysvětlit roli databázového systému v architektuře aplikačního software.
- – Popsat základní architektury databázových systémů (centralizovaná databáze, distribuovaná databáze), jejich výhody a nevýhody.
Optimalizace databází:
- – Vysvětlit na příkladu (např. relační databázové tabulky) co je databázový index a k čemu je dobrý.
- – Vysvětlit na příkladu normální formy v relačním modelu dat a k čemu slouží při návrhu struktury relační databáze.
5. Architektury počítačových systémů a sítí
Reprezentace dat:
- – Vysvětlit motivaci používání dvojkové soustavy, převádět celá čísla z desítkové reprezentace do reprezentace s dvojkovým doplňkem a zpět, převádět desetinná čísla do reprezentace IEEE 754 a zpět, na obou formátech demonstrovat omezení rozsahu a přesnosti
- – Vysvětlit motivaci používání šestnáctkové soustavy, převádět celá čísla z desítkové reprezentace do šestnáctkové soustavy a zpět
- – Použít bitové operace (AND, OR, NOT, XOR, posuny) k manipulaci hodnot bitových polí
- – Vysvětlit a s použitím tabulek převádět text do a z ASCII kódování, vysvětlit motivaci kódování UNICODE ve variantách UTF-8 a UTF-16
- – Vysvětlit rozdíl mezi rastrovou a vektorovou grafikou, na příkladech uvést výběr vhodné reprezentace počítačového obrazu. Vysvětlit reprezentaci barev na počítači.
- – Vysvětlit motivaci používání šestnáctkové soustavy, převádět celá čísla z desítkové reprezentace do šestnáctkové soustavy a zpět
Organizace a architektura počítače:
- – Načrtnout strukturu počítače s procesorem, operační pamětí, základními zařízeními a sběrnicemi mezi nimi, správně identifikovat tyto komponenty v reálném počítači a vysvětlit jejich základní funkci, správně přiřadit názvy aktuálních technologií (jako PCI Express, USB, DDR)
- – Vysvětlit rozdíl mezi analogovým a digitálním přenosem.
- – Na jednoduchých příkladech jednotek instrukcí (na úrovni základních instrukcí: load a store, aritmetické a bitové operace, nepodmíněný skok, podmíněné skoky) demonstrovat funkci procesoru, použít tyto instrukce k implementaci jednoduchých konstrukcí vyššího programovacího jazyka (vyčíslení výrazu, volání funkce s parametry a lokálními proměnnými, cyklus s celočíselným čítačem)
- – Vysvětlit rozdíl mezi analogovým a digitálním přenosem.
Operační systémy:
- – Vysvětlit základní abstrakce poskytované operačním systémem (proces a vlákno jako abstrakce procesoru, adresový prostor jako abstrakce operační paměti, soubor jako abstrakce externí paměti, socket jako abstrakce navázaného spojení), ovladače zařízení
- – Vysvětlit, jakým způsobem operační systém nabízí služby (API) a jak se rozdíly v API odráží na přenositelnosti aplikací mezi operačními systémy
- – Zdůvodnit privilegovanou pozici jádra operačního systému, správně rozlišit příklady privilegovaných a neprivilegovaných operací
- – Vysvětlit, jakým způsobem operační systém nabízí služby (API) a jak se rozdíly v API odráží na přenositelnosti aplikací mezi operačními systémy
Procesy a vlákna:
- – Vysvětlit základní myšlenku paralelního běhu vláken a procesů pomocí přepínání kontextu
- – V sémantice prokládání instrukcí na jednoduchých příkladech demonstrovat race conditions mezi vlákny
Použití souborového API pro přístup k zařízením v OS, standardní vstup a výstup a jejich přesměrování, roury (pipes) jako meziprocesová komunikace:
- – Použít rozhraní operačního systému pro přístup k obsahu souborů (open, seek, read, write, close) v jednoduchých programech
- – Vysvětlit roli standardního vstupu a výstupu, na jednoduchých příkladech řetězení příkazů (cat, grep, cut, sort, head) demonstrovat skládání procesů a přesměrování, napsat vlastní program vhodný pro začlenění do podobné sekvence
Elektronický podpis, šifrování, certifikáty:
- – Vysvětlit roli veřejného a soukromého klíče ve vytváření elektronického podpisu
- – Vysvětlit význam end-to-end šifrování pro komunikaci na Internetu; popsat, jakým způsobem jsou standardně šifrované emaily, vysvětlit roli veřejného a soukromého klíče při asymetrickém šifrování.
- – Vysvětlit pojmy certifikát a certifikační autorita.
- – Vysvětlit význam end-to-end šifrování pro komunikaci na Internetu; popsat, jakým způsobem jsou standardně šifrované emaily, vysvětlit roli veřejného a soukromého klíče při asymetrickém šifrování.
Základy fungování sítí:
- – Vysvětlit roli IP adresy při síťové komunikaci, důvody pro zavedení IPv6.
- – Vysvětlit roli doménových jmen a způsob převodu na IP adresy.
- – Vysvětlit strukturu URL jako prostředku adresace služeb v prostředí internetu
- – Nakreslit zjednodušené schéma komunikace v internetu s hlavními účastníky (klient, sekvence routerů, server) a pomocí něj vysvětlit paketový přenos, včetně principu spolehlivého doručování paketů pomocí pozitivního potvrzování
- – Vysvětlit fungování statických i dynamických HTML stránek na internetu v krocích od zadání URL do prohlížeče až k zobrazení HTML dokumentu (struktura URL, DNS, TCP přenos dotazu a odpovědi, zobrazení HTML)
- – Vysvětlit roli doménových jmen a způsob převodu na IP adresy.
6. Umělá inteligence
Řešení úloh prohledáváním:
- – Formulovat, co je dobře definovaná úloha
- – Vysvětlit principy a rozdíly stromového a grafového prohledávání
- – Popsat základní algoritmy neinformovaného prohledávání (DFS, BFS, uniform-cost search)
- – Vysvětlit algoritmus A*, definovat přípustné a konzistentní heuristiky a popsat jejich vztah k typu prohledávání
- – Vysvětlit principy a rozdíly stromového a grafového prohledávání
Logické uvažování:
- – Definovat formuli ve výrokové logice a popsat konjunktivní a disjunktivní normální formu
- – Vysvětlit pojmy model, logický důsledek a splnitelnost
- – Vysvětlit algoritmus DPLL a rezoluční metodu (rezoluční krok)
- – Vysvětlit pojmy model, logický důsledek a splnitelnost
Pravděpodobnostní uvažování:
- – Definovat pojmy úplná sdružená distribuce, náhodná proměnná a nezávislost
- – Vysvětlit Bayesovo pravidlo
- – Definovat Bayesovskou síť, popsat její konstrukci a základní metody odvozování
- – Vysvětlit Bayesovo pravidlo
Teorie rozhodování:
- – Vysvětlit pojem racionálního agenta a formuli pro výběr akce (maximální očekávaný užitek)
- – Definovat Markovský rozhodovací problém (MDP) a jeho řešení; vysvětlit Bellmanovu rovnici a popsat metody řešení MDP
Automatické plánování:
- – Formulovat plánovací problém včetně definice operátoru
- – Popsat metody dopředného a zpětného plánování
Hry a teorie her:
- – Definovat hru dvou hráčů a popsat algoritmy Minimax a alfa-beta prořezávání
- – Vysvětlit pojmy vězňovo dilema a Nashovo ekvilibrium
Strojové učení:
- – Popsat základní druhy učení (s učitelem, bez učitele, zpětnovazební)
- – Definovat rozhodovací stromy a popsat jejich konstrukci
- – Popsat metodu regrese
- – Vysvětlit koncept umělé neuronové sítě
- – Popsat základní techniky zpětnovazebního učení a rozdíly mezi pasivním a aktivním učením
- – Definovat rozhodovací stromy a popsat jejich konstrukci