this dir | view | cards | source | edit | dark top

Společná informatika

Společná informatika
1. Automaty a jazyky

Regulární jazyky

1. Automaty a jazyky

Deterministický a nedeterministický konečný automat

1. Automaty a jazyky

Regulární výrazy

1. Automaty a jazyky

Gramatika, jazyk generovaný gramatikou

1. Automaty a jazyky

Zásobníkový automat, třída jazyků přijímaných zásobníkovými automaty

1. Automaty a jazyky

Pumping lemma pro bezkontextové jazyky

1. Automaty a jazyky

Chomského normální tvar

1. Automaty a jazyky

Turingův stroj

1. Automaty a jazyky

Algoritmicky nerozhodnutelné problémy

1. Automaty a jazyky

Chomského hierarchie

1. Automaty a jazyky

Schopnost zařazení konkrétního jazyka do Chomského hierarchie (zpravidla sestrojení odpovídajícího automatu či gramatiky)

1. Automaty a jazyky

Příklad kontextového jazyka

2. Algoritmy a datové struktury

Časová a prostorová složitost algoritmu

2. Algoritmy a datové struktury

Měření velikosti dat

2. Algoritmy a datové struktury

Složitost v nejlepším, nejhorším a průměrném případě

2. Algoritmy a datové struktury

Asymptotická notace

2. Algoritmy a datové struktury

Třídy P a NP

2. Algoritmy a datové struktury

Převoditelnost problémů, NP-těžkost a NP-úplnost

2. Algoritmy a datové struktury

Příklady NP-úplných problémů a převodů mezi nimi

2. Algoritmy a datové struktury

Metoda rozděl a panuj: princip rekurzivního dělení problému na podproblémy

2. Algoritmy a datové struktury

Metoda rozděl a panuj: výpočet složitosti pomocí rekurentních rovnic

2. Algoritmy a datové struktury

Master theorem (kuchařková věta) – bez důkazu

2. Algoritmy a datové struktury

Metoda rozděl a panuj: aplikace (Mergesort, násobení dlouhých čísel)

2. Algoritmy a datové struktury

Definice (binárního) vyhledávacího stromu

2. Algoritmy a datové struktury

Operace s nevyvažovanými binárními vyhledávacími stromy

2. Algoritmy a datové struktury

AVL stromy (definice)

2. Algoritmy a datové struktury

Primitivní třídicí algoritmy (Bubblesort, Insertsort)

2. Algoritmy a datové struktury

Quicksort

2. Algoritmy a datové struktury

Dolní odhad složitosti porovnávacích třídicích algoritmů

2. Algoritmy a datové struktury

Prohledávání grafu do šířky a do hloubky

2. Algoritmy a datové struktury

Topologické třídění orientovaných grafů

2. Algoritmy a datové struktury

Nejkratší cesty v ohodnocených grafech (Dijkstrův a Bellmanův-Fordův algoritmus)

2. Algoritmy a datové struktury

Minimální kostra grafu (Jarníkův a Borůvkův algoritmus)

2. Algoritmy a datové struktury

Toky v sítích (Ford-Fulkerson algoritmus)

3. Programovací jazyky

Abstrakce, zapouzdření, polymorfismus – související konstrukty programovacích jazyků (třídy, rozhraní, metody, datové položky, dědičnost, viditelnost)

3. Programovací jazyky

(Dynamický) polymorfismus, statické a dynamické typování

3. Programovací jazyky

Vícenásobná dědičnost a její problémy (vícenásobná a virtuální dědičnost v C++, interfaces v C#)

diamantový problém – pokud mají moji rodiče společného rodiče a já volám jeho metodu, kterou oba implementují, jaká metoda se má volat?

3. Programovací jazyky

Číselné a výčtové typy

3. Programovací jazyky

Ukazatele a reference v C++

3. Programovací jazyky

Hodnotové a referenční typy v C#

3. Programovací jazyky

Pokročilé prvky syntaxe C#

3. Programovací jazyky

Reference, imutabilní typy a boxing v C#

3. Programovací jazyky

Šablony (templates) a statický polymorfismus v C++

3. Programovací jazyky

Generické typy v C# (bez omezení typových parametrů)

3. Programovací jazyky

Typy reprezentující funkce v C++, C#

3. Programovací jazyky

Lambda funkce a funkcionální rozhraní

3. Programovací jazyky

Správa životního cyklu zdrojů v případě výskytu chyb – RAII v C++, using v C#, obsluha a propagace výjimek

3. Programovací jazyky

Alokace (alokace statická, na zásobníku, na haldě)

3. Programovací jazyky

Inicializace (konstruktory, volání zděděných konstruktorů)

3. Programovací jazyky

Destrukce (destruktory, finalizátory)

3. Programovací jazyky

Explicitní uvolňování objektů, reference counting, garbage collector

3. Programovací jazyky

Reprezentace vláken v programovacích jazycích

3. Programovací jazyky

Specifikace funkce vykonávané vláknem a základní operace nad vlákny

3. Programovací jazyky

Časově závislé chyby (race condition) a mechanismy pro synchronizaci vláken

3. Programovací jazyky

Implementace dynamického polymorfismu (tabulka virtuálních metod)

3. Programovací jazyky

Nativní a interpretovaný běh, reprezentace programu, bytecode, interpret jazyka, just-in-time (JIT) a ahead-of-time (AOT) překlad

3. Programovací jazyky

Proces sestavení programu, oddělený překlad, linkování, staticky a dynamicky linkované knihovny

3. Programovací jazyky

Běhové prostředí procesu a vazba na operační systém

4. Architektura počítačů a operačních systémů

Základní architektura počítače, reprezentace čísel, dat a programů

4. Architektura počítačů a operačních systémů

Reprezentace a přístup k datům v paměti, adresa, adresový prostor

4. Architektura počítačů a operačních systémů

Ukládání jednoduchých a složených datových typů

4. Architektura počítačů a operačních systémů

Implementovat běžné programové konstrukce vyšších jazyků (přiřazení, podmínka, cyklus, volání funkce) pomocí instrukcí procesoru

nacvičit

4. Architektura počítačů a operačních systémů

Zapsat běžnou konstrukci vyššího jazyka (přiřazení, podmínka, cyklus, volání funkce), která odpovídá zadané sekvenci (vysvětlených) instrukcí procesoru

nacvičit

4. Architektura počítačů a operačních systémů

Podpora pro běh operačního systému – privilegovaný a neprivilegovaný režim procesoru, jádro operačního systému

4. Architektura počítačů a operačních systémů

Popsat roli řadiče zařízení při programem řízené obsluze zařízení (PIO), pro zadané adresy a funkce vstupních a výstupních portů implementovat programem řízenou obsluhu zadaného zařízení (myš, disk)

4. Architektura počítačů a operačních systémů

Popsat roli přerušení při programem řízené obsluze zařízení (PIO), na úrovni vykonávání instrukcí popsat reakci procesoru (hardware) a operačního systému (software) na žádost o přerušení

4. Architektura počítačů a operačních systémů

Neprivilegované (uživatelské) procesy

4. Architektura počítačů a operačních systémů

Procesy, vlákna, kontext procesu a vlákna

4. Architektura počítačů a operačních systémů

Přepínání kontextu, kooperativní a preemptivní multitasking

4. Architektura počítačů a operačních systémů

Plánování běhu procesů a vláken, stavy vlákna

4. Architektura počítačů a operačních systémů

Vysvětlit rozdíl mezi virtuální a fyzickou adresou a identifikovat, zda se v zadaném kontextu či fragmentu kódu používá virtuální nebo fyzická adresa

4. Architektura počítačů a operačních systémů

Na zadaném příkladu identifikovat a vysvětlit význam komponent virtuální a fyzické adresy (číslo stránky, číslo rámce, offset)

4. Architektura počítačů a operačních systémů

Pro konkrétní adresy a obsah jednoúrovňové stránkovací tabulky řešit úlohy překladu adres

4. Architektura počítačů a operačních systémů

Vysvětlit roli virtuálních adresových prostorů v ochraně paměti procesů a vláken

4. Architektura počítačů a operačních systémů

Sdílení úložného prostoru – soubory, analogie s adresovým prostorem; abstrakce a rozhraní pro práci se soubory

4. Architektura počítačů a operačních systémů

Časově závislé chyby (race conditions)

4. Architektura počítačů a operačních systémů

Kritická sekce, vzájemné vyloučení

4. Architektura počítačů a operačních systémů

Základní synchronizační primitiva, jejich rozhraní a použití – aktivní a pasivní čekání, zámky

Hurá, máš hotovo! 🎉
Pokud ti moje kartičky pomohly, můžeš mi koupit pivo.