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).
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/1 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/1 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