Obsah a organizácia záverečného konania pre I. stupeň štúdia študijného programu v odbore Informatika na FMFI UK
doc. RNDr. Dana Pardubská, CSc., garantka študijného programu
Úvod
Bakalárske štúdium informatiky je podľa študijného programu ukončené štátnymi skúškami. Tento dokument je určený študentom bakalárskeho štúdia informatiky, ktorí budú končiť štúdium a obsahuje informácie o obsahu a organizácii štátnych skúšok. Dokument vychádza zo študijných poriadkov UK, FMFI UK a akreditovaného študijného programu I. stupňa v odbore Informatika na FMFI UK.
Úlohou štátnej skúšky bakalárskeho štúdia je overiť, či študent získal vedomosti a zručnosti dané profilom absolventa bakalárskeho štúdia informatiky, či je schopný syntetizovať poznatky získané štúdiom čiastkových predmetov a tvorivo ich uplatniť.
Štátne skúšky bakalárskeho štúdia informatiky pozostávajú z dvoch častí:
- štátna skúška z dvoch predmetov matematika a informatika sa štandardne koná začiatkom 5. semestra štúdia,
- obhajoba bakalárskej práce sa koná na záver bakalárskeho štúdia.
Obsah štátnej skúšky
Štátna skúška bakalárskeho štúdia pokrýva potreby dvoch rozličných skupín študentov bakalárskeho štúdia informatiky. Pre tých študentov, ktorí budú pokračovať v magisterskom štúdiu informatiky, musí overiť ich vedomosti a schopnosť syntetizovať základné poznatky odboru pred ďalšou hlbšou špecializáciou. Pre tých absolventov bakalárskeho štúdia, ktorí nebudú pokračovať v magisterskom štúdiu, má záverečná skúška overiť ich odbornú spôsobilosť (danú profilom absolventa bakalárskeho štúdia informatiky) pred nástupom do reálnej praxe.
Štátnicový predmet matematika pokrýva základné matematické predmety, ktoré tvoria základ teoretickej informatiky aj samotnej informatiky. Pozostáva z nasledujúcich okruhov (zodpovedajúcich predmetom povinného základu):
- Matematická analýza (1) a (2)
- Algebra (1) a (2)
- Úvod do diskrétnych štruktúr
- Úvod do matematickej logiky
- Úvod do kombinatoriky a teórie grafov
Štátnicový predmet informatika obsahuje teoretickú informatiku a aplikovanú informatiku, pokrytú nasledujúcimi predmetmi bakalárskeho štúdia informatiky:
- Princípy počítačov
- Programovanie (1)-(3)
- Systémové programovanie
- Operačné systémy
- Počítačové siete (1)
- Úvod do databázových systémov
- Formálne jazyky a automaty (1)
- Algoritmy a dátové štruktúry
- Tvorba efektívnych algoritmov
- Princípy tvorby softvéru
Obsah predmetov štátnej skúšky
Matematická analýza
- Limita reálnej funkcie jednej reálnej premennej (definícia vlastnej a nevlastnej limity, vety o výpočte limít, číslo e, Cauchyho-Bolzanovo kritérium konvergencie postupnosti).
- Spojité funkcie a ich základné vlastnosti (definícia spojitej funkcie, Darbouxova vlastnosť, vlastnosti spojitých funkcií na uzavretých ohraničených intervaloch).
- Derivácia funkcie a jej využitie na vyšetrovanie priebehu funkcie (definícia derivácie, vety o výpočte derivácií, vety o strednej hodnote, derivácie vyšších rádov, vyšetrovanie monotónnosti, extrémov a konvexnosti pomocou derivácií).
- Primitívna funkcia a neurčitý integrál (definícia neurčitého integrálu, metóda per partes a substitúcie, univerzálna trigonometrická substitúcia).
- Riemannov určitý integrál (definícia riemannovsky integrovateľnej funkcie, integrovateľnosť monotónnych a spojitých funkcií, Newtonov-Leibnizov vzorec, integrál ako funkcia hranice).
- Číselné rady (definícia číselného radu, Cauchyho-Bolzanovo kritérium konvergencie radu, kritériá pre konvergenciu radov s nezápornými členmi, Leibnizovo kritérium, relatívne a absolútne konvergentné rady, prerovnanie radov).
- Mocninové a Taylorove rady (definícia mocninového radu, polomer a interval konvergencie, derivovanie a integrovanie mocninových radov, definícia Taylorovho radu, pojem analytickej funkcie).
Algebra (platné do konca AR 2023/2024)
- Vektorové priestory, lineárne zobrazenia [priestor, podpriestor, lineárna závislosť, báza a dimenzia. Steinitzova veta, súčty podpriestorov, lineárne zobrazenia, kompozícia lineárnych zobrazení, inverzné lineárne zobrazenia, matica lineárneho zobrazenia, jadro a obraz lineárneho zobrazenia]
- Matice a riešenia lineárnych rovníc nad poľom F [matice, operácie s maticami (násobenie, sčítanie), elementárne riadkové operácie, trojuholníkový a redukovaný trojuholníkový tvar matice, systémy lineárnych rovníc nad poľom F, množina riešení homogénnych a nehomogénnych systémov lineárnych rovníc, existencia a tvary riešení]
- Determinanty [Determinant matice. Vlastnosti determinantov. Výpočty determinantov a ich použitie pri riešení lineárnych rovníc a hľadaní inverznej matice]
- Grupy [grupy, podgrupy, izomorfizmus a homomorfizmus grúp, cyklické grupy (s klasifikáciou) a ich podgrupy, rozklad grupy podľa podgrupy, Lagrangeova veta, homomorfizmus a izomorfizmus grúp, normálna podgrupa, faktorizácia grupy podľa podgrupy]
- Okruhy [základné vlastnosti operácií v okruhoch, podokruh, ideál (hlavný, maximálny, prvoideál), faktorizácia okruhu podľa ideálu, vzťah medzi výsledkom faktorizácie a vlastnosťami ideálu, podľa ktorého sa faktorizuje]
- Okruhy hlavných ideálov [existencia jednotky v okruhu, najväčší spoločný deliteľ, vlastnosti deliteľnosti, ireducibilné prvky, veta o jednoznačnom rozklade]
- Okruhy polynómov [pojem algebraického a transcendentného prvku pre daný okruh, okruh polynómov R[x], okruh polynómov F[x] nad poľom F ako okruh hlavných ideálov, veta o jednoznačnom rozklade polynómov nad daným poľom, substitučný homomorfizmus (veta o substitúcii), korene, viacnásobné korene, Hornerova schéma]
- Rozšírenia polí [konečné rozšírenie poľa, stupeň rozšírenia, algebraické rozšírenie, minimálny polynóm daného algebraického prvku]
- Konečné polia [charakteristika poľa, možné počty prvkov konečných polí, počítanie v poli F[x]/(p(x)) pre ireducibilný polynóm p(x), rozkladové pole polynómu, existencia poľa s p^n prvkami]
Algebra (platné od začiatku AR 2024/2025, teda už od štátnic v septembri 2024)
- Vektorové priestory, lineárne zobrazenia [priestor, podpriestor, lineárna závislosť, báza a dimenzia. Steinitzova veta, súčty podpriestorov, lineárne zobrazenia, kompozícia lineárnych zobrazení, inverzné lineárne zobrazenia, matica lineárneho zobrazenia, jadro a obraz lineárneho zobrazenia]
- Matice a riešenia lineárnych rovníc nad poľom F [matice, operácie s maticami (násobenie, sčítanie), elementárne riadkové operácie, trojuholníkový a redukovaný trojuholníkový tvar matice, systémy lineárnych rovníc nad poľom F, množina riešení homogénnych a nehomogénnych systémov lineárnych rovníc, existencia a tvary riešení]
- Determinanty [Determinant matice. Vlastnosti determinantov. Výpočty determinantov a ich použitie pri riešení lineárnych rovníc a hľadaní inverznej matice]
- Priestory so skalárnym súčinom [skalárny súčin, veľkosť vektora, ortogonálny doplnok, existencia ortonormálnej bázy]
- Kvadratické formy [kongruentné matice, kvadratické formy, kanonický tvar, zákon zotrvačnosti, kladná definitnosť]
- Podobnosť matíc [podobnosť matíc, vlastné hodnoty a vlastné vektory, charakteristický polynóm, podobnosť s diagonálnou maticou, ortogonálna podobnosť]
- Polynómy a okruhy polynómov [polynómy a operácie s nimi, veta o delení so zvyškom, deliteľnosť, najväčší spoločný deliteľ a Euklidov algoritmus, existencia a jednoznačnosť rozkladu na ireducibilné polynómy, základné výsledky o koreňoch, základné výsledky o ireducibilných polynómoch]
Úvod do diskrétnych štruktúr
- Základy matematickej logiky [logické operácie, formuly, výrokové funkcie, kvantifikácia výrokov, tautógia, kontradikcia]
- Matematický dôkaz [logický dôsledok, základné typy matematickych dôkazov]
- Intuitívny pojem množiny [základné pojmy a označenia, množinové operácie. Množinové identity]
- Karteziánsky súčin množín [definícia usporiadanej dvojice, karteziánsky súčin dvoch a viacerých množín, množinové identity s karteziánskym súčinom, použitie karteziánskeho súčinu]
- Relácie [skladanie relácií, inverzná relácia, relácie na množinách. Relácia ekvivalencie, rozklad množiny. Tranzitívny uzáver relácie, reflexívno-tranzitívny uzáver – definície, vlastnosti.]
- Usporiadania [definícia čiastočného a úplného usporiadania množiny, ostré a neostré usporiadanie, minimálny, maximálny, prvý a posledný prvok množiny, lexikografické usporiadanie karteziánskeho súčinu]
- Zobrazenia [definícia pomocou relácií, injektívne, surjektívne a bijektívne zobrazenia a ich skladanie]
- Mohutnosť množiny [Základné vlastnosti mohutnosti a nerovnosti. Počítanie s mohutnosťami, súčet, súčin a mocnina.]
- Cantor-Bernsteinova veta a jej dôsledky [formulácia vety, idea dôkazu, usporiadanie kardinálnych čísel]
- Konečné a nekonečné množiny [definícia konečnej množiny, definícia nekonečnej množiny, existencia nekonečných množín, vlastnosti konečných a nekonečných množín]
- Spočítateľné a nespočítateľné množiny [zjednotenie a karteziánsky súčin spočítateľných množín, existencia nespočítateľných množín, Cantorova diagonálna metóda]
- Potenčná množina a jej kardinalita [formulácia Cantorovej vety o potenčnej množine, idea dôkazu, dôsledky pre nekonečné množiny]
Úvod do matematickej logiky
- Syntax a sémantika výrokovej logiky a logiky prvého rádu
- Tablový kalkul pre výrokovú logiku, korektnosť a úplnosť tablového kalkulu
- Tablový kalkul pre logiku prvého radu a jeho korektnosť
- SAT solvery, algoritmus CDDL, rezolvencia vo výrokovej logike
- Normálne formy formúl vo výrokovej logike, transformácia do CNF, veta o dedukcii, veta o kompaktnosti pre výrokovú logiku
- Normálne formy formúl v logike prvého radu, skolemizácia, rezolvencia v prvorádovej logike
Úvod do kombinatoriky a teórie grafov
- Prirodzené čísla a matematická indukcia, Dirichletov princíp [definícia prirodzených čísiel, vlastnosť dobrého usporiadania, dôkaz matematickou indukciou]
- Základné pravidlá kombinatorického počítania [pravidlo súčtu, súčinu, mocnenia, počítanie prvkov množiny dvoma spôsobmi]
- Variácie a enumerácia zobrazení [variácie s opakovaním a bez opakovania, permutácie, určenie ich počtu]
- Kombinácie a enumerácia podmnožín [kombinácie bez opakovania a s opakovaním a určenie ich počtu, príklady kombinácií s opakovaniami]
- Binomická a polynomická veta [znenie a dôkaz, dôsledky]
- Rovnosti a nerovnosti s kombinačnými číslami [identity zahŕňajúce kombinačné čísla, metódy dokazovania identít]
- Princíp zapojenia a vypojenia [formulácia, dôkaz a aplikácie: enumerácia surjektívnych zobrazení, počet permutácií bez pevných bodov]
- Hierarchia rastu funkcií, odhady čísla n! O-symbolika, rádová rovnosť, asymptotická rovnosť, odhady
- Stromy a lesy, kostry, súvislé grafy, meranie vzdialeností v grafe [definície, vlastnosti, rozličné charakterizácie stromov]
- Eulerovské a bipartitné grafy [charakterizácie eulerovských a bipartitných grafov, algoritmus na nájdenie eulerovského ťahu]
- Meranie vrcholovej a hranovej súvislosti grafu [definície, vzájomný vzťah, artikulácie, mosty, charakterizácia 2-súvislých grafov]
- Hamiltonovské grafy [definícia, postačujúce podmienky, zložitosť problému]
Princípy počítačov
- Kódovanie informácie v počítači (číselná, textová, obrazová, riadiaca a i.)
- Formáty a aritmetika celých čísel (celé čísla bez znamienka a so znamienkom, jednotkový a binárny doplnkový kód, excess kód, Golayov zrkadlový kód, osmičkový, šestnástkový kód, BCD kód; sčítanie, odčítanie násobenie a delenie, identifikácia a ošetrenie chýb (pretečenie, delenie nulou))
- Formáty a aritmetika reálnych čísel (pevná rádová čiarka, pohyblivá rádová čiarka, normalizovaný tvar, technika skrytého bitu, základné aritmetické operácie s reálnymi číslami vo formáte pohyblivá rádová čiarka)
- Booleovské funkcie a operátory (definícia, základné vlastnosti BF, skladanie BF, formuly, uzáver množiny BF, uzavreté množiny BF, úplnosť množiny BF, realizácie BF formulami)
- Realizácia Booleovských funkcií a operátorov disjunktívnymi normálnymi formami (DNF)
- Minimalizácia DNF (úplnosť systému AND, OR, NOT, úplná DNF, princíp minimalizácie. Karnaughove mapy, Quine-McCluskey-ova metóda minimalizácie DNF. Neúplne určené BF a ich realizácia pomocou DNF.)
- Fyzikálne aspekty logických obvodov (signál, modulácia signálu (amplitúdová, frekvenčná, fázová), odchýlky od ideálnych hodnôt, vstupné, výstupné vetvenie obvodu, preklápanie obvodu a i.)
- Kombinačné obvody (základné kombinačné obvody, návrh kombinačných obvodov, časová a priestorová zložitosť kombinačných obvodov; sčítačka, sčítačka so zrýchleným prenosom, ALU)
- Sekvenčné obvody (základné pamäťové členy, statická a dynamická analýza SR člena, konečný automat, návrh sekvenčného obvodu, registre, čítač, pamäť)
- Digitálne systémy (jazyk RTL, riadiace jednotky, návrh digitálneho systému, násobenie a delenie)
- Architektúra a princíp činnosti počítača (s von Neumannovského a Harvardskou architektúrov).
- Inštrukcie počítača (inštrukčný súbor, formát inštrukcií, spracovanie inštrukcie, CPU cykly, RTL, spôsoby adresovania).
- CPU (Central Processing Unit) – hlavné časti CPU a ich základné funkcie, makroinštrukcie a mikroinštrukcie, konfigurácie CPU, spracovanie prerušení).
- ALU (Arithmetic and Logic Unit) – aritmetické operácie, logické funkcie, podmienkové bity.
- Mikroprogramovanie – napevno zdrôtovaná vs. mikroprogramovo riadená CLU, horizontálne vs. vertikálne mikroinštrukcie.
- RISC a CISC – východiská a motivácia, princípy návrhu RISC, porovnanie RISC vs. CISC, špecifiká registrov pri RISC architektúre (rozdelenie do okien).
- Spracovanie vstupu a výstupu – vstupno-výstupné zariadenia, formáty a spôsoby prenosu údajov, memory mapped I/O vs. I/O mapped I/O, riadenie vstupu a výstupu (programom riadený I/O, I/O využívajúci prerušenia, DMA prenos, I/O kanál).
- Konfigurácie multiprocesorových systémov – so spoločnou zbernicou, s duálnou zbernicou, NUMA, switching (crossbar) matrix interconnection scheme.
- Pamäť– hierarchia pamätí, delenie pamätí (RAM, ROM, ...), asociatívna pamäť, cache, zásobníková pamäť.
- Pipelining – aritmetický a inštrukčný, jednofunkčný a polyfunkčný, statický a dynamický, sušenie rúry.
Programovanie
- Objektovo orientované programovanie (zapúzdrenie, dedičnosť, polymorfizmus, trieda, modifikátory prístupu, konštruktory, abstraktné triedy a rozhrania), vnorené triedy (nested classes), garbage collection.
- Výnimky (exceptions) - vyhodenie výnimky, zachytenie a spracovanie výnimiek (try, catch, finally), vlastné triedy výnimiek, checked a unchecked výnimky.
- Vlákna (threads) – stav vlákna (new, runnable, blocked, waiting, timed_waiting, terminated), životný cyklus vlákna (vytvorenie, spustenie, zastavenie, ...), plánovanie vlákien (fixed-priority scheduling, yield, time-slicing). Synchronizácia vlákien (kritické úseky, wait a notify, explicitné zámky a podmienkové premenné).
- Generics (formálne typové parametre, parametrizovaný typ, wildcards, ohraničené wildcards, generic methods).
- Návrhové vzory: Composite, Strategy
- Návrhové vzory: Decorator, Abstract Factory
- Návrhové vzory: Bridge, Memento
- Návrhové vzory: Iterator, Visitor
Systémové programovanie
- Jazyk assemblera – prvky jazyka, typy inštrukcií, operandy, adresné módy.
- Práca so zásobníkom – volacie konvencie C a Pascal a ich vlastnosti.
- Assembler a makroprocesor – úloha, spôsob práce, jednoprechodové a dvojprechodové.
- Linker a loader – úloha, spôsob práce, knižnice, dynamické linkovanie.
- Systémové volania – procesy a spracovanie signálov – vytváranie a ukončovanie procesu, spúšťanie programu, signály.
- Systémové volania – vstupno-výstupné operácie so súbormi a terminálmi.
- Systémové volania – sieťová komunikácia.
Operačné systémy
- Koncepcia OS (procesy, súbory, funkcie a služby OS, systémové volania, interpreter príkazov) a štruktúra OS (monolitický kernel, mikrokernel, …).
- Procesy (hierarchia procesov, vytváranie, swapovanie procesov, životný cyklus procesu) a komunikácia medzi procesmi (synchronizácia, adresovanie).
- Synchronizácia procesov (časová závislosť procesov /race conditions/, vzájomné vylúčenie /mutual exclusion/ a spôsoby jeho dosiahnutia – hardvérové aj softvérové) a klasické problémy synchronizácie procesov (producent/konzument, problém obedujúcich filozofov, problém čitateľov a zapisovateľov).
- Uviaznutie – podmienky pre vznik uviaznutia, metódy riešenia uviaznutia (ignorovanie, detekcia a vyvedenie, prevencia, vyhýbanie sa). Rozdiel medzi uviaznutím a vyhladovaním.
- Správa procesov a procesora – plánovače a ich funkcie. Algoritmy plánovania procesov (FCFS, SJF, HRN, SRT, RR, ...).
- Správa pamäte – jej funkcie, typy správy pamäte (jeden súvislý úsek, statické súvislé úseky, dynamické súvislé úseky, stránkovanie, segmentovanie).
- Správa pamäte – virtuálna pamäť, výpadok stránky, nahradzovacie algoritmy (FIFO, NRU, LRU, NFU), stránkovanie na žiadosť, model s pracovnou množinou, implementačné problémy (zálohovanie inštrukcií, zamykanie stránok v pamäti, zdieľanie stránok).
- Správa súborov – funkcie, typy súborov, štruktúra súboru, hierarchické systémy adresárov, správa voľného priestoru na disku (spájaný zoznam voľných blokov, indexové bloky, bitová mapa), správa priestoru prideleného súboru (FAT, i-node), zdieľané súbory.
- Správa zariadení – funkcie, klasifikácia V/V zariadení, pojem riadiaca jednotka, DMA, techniky prideľovania V/V, V/V softvér, správa diskových požiadaviek (SSTF, SCAN, C-SCAN, N-step SCAN).
Počítačové siete
- Vrstvové modely, služby - vrstva, rozhranie, protokol, služba, typy služieb, referenčný model ISO OSI a model TCP/IP.
- Fyzická vrstva – metalické a optické káble, elektromagnetické spektrum a bezdrôtové prenosy.
- Linková vrstva – Ethernet a WiFi – adresácia, spôsob prenosu, obmedzenia, rozširovanie, BSS, ESS, access point, distribučný systém, portál.
- Sieťová vrstva TCP/IP (IPv4) – adresácia, služby, protokol IP, smerovanie, ARP, NAT, ICMP.
- Transportná vrstva TCP/IP – služby, protokoly UDP a TCP.
- Aplikačná vrstva – DNS, DHCP.
- Aplikačná vrstva – web – organizácia webu, protokoly, proxy servery, bezpečnosť.
- Aplikačná vrstva – elektronická pošta – organizácia elektronickej pošty, protokoly, MIME, bezpečnosť.
- Sieťová vrstva TCP/IP – IPv6 – adresácia, služby, protokol IPv6, smerovanie, ICMPv6, Neighbour Discovery Protocol, konfigurácia, 6to4, prepojenie s IPv4.
- Bezpečnosť sietí – bezpečnostné problémy a mechanizmy na rôznych vrstvách – VLAN, VPN, SSL/TLS, firewall, bezpečnosť na aplikačnej vrstve.
Úvod do databáz
- Účel databázových systémov. Charakteristika databázových aplikácií. Trojstupňová architektúra ANSI SPARC. Dátové modely.
- Relačný kalkul. Syntax predikátových formúl. Formulácia dotazov v relačnom kalkule. Negácia, doménovo nezávislé a bezpečné formuly. Súvis s inými dotazovacími jazykmi.
- Datalog. Syntax a sémantika Datalogových programov. Negácia. Bezpečnosť Datalogových programov. Výpočet dotazu na Datalogový program. Súvis s inými dotazovacími jazykmi.
- Relačná algebra. Operátory relačnej algebry. Grupovanie a agregácia. Rekurzia, výpočet pevného bodu. Súvis relačnej algebry s inými dotazovacími jazykmi.
- Jazyk SQL. Programovanie v SQL (Data Definition Language, Data Manipulation Language). Negácia. Grupovanie a agregácia. Rekurzia. Súvis SQL s inými dotazovacími jazykmi.
- Teória navrhovania relačných databáz. Funkčné závislosti. Armstrongove axiómy. Uzáver množiny atribútov, uzáver množiny funkčných závislostí. Pokrytie a minimálne pokrytie množiny funkčných závislostí. Nadkľúče a kľúče relácie.
- Normálne formy. Účel normalizácie databáz. Tretia normálna forma, Boyce-Coddova normálna forma. Algoritmy pre dekompozíciu do normálnych foriem. Bezstratovosť dekompozície, zachovanie funkčných závislostí.
- Transakcie. Požiadavky na transakčný systém (ACID). Architektúra transakčného systému. Rozvrhy. Triedy sériovateľnosti a obnoviteľnosti.
- Implementácia sériovateľnosti a obnoviteľnosti v transakčných systémoch. Testy sériovateľnosti. Algoritmy izolácie. Zámky, časové pečiatky, validácia. Uviaznutie (deadlock) a metódy riešenia uviaznutia. Algoritmy obnovy. Log-file, checkpointing.
- Fyzická organizácia. Dvojúrovňový model pamäti a organizácie dát. Indexové stromy, hashovanie. Operátory fyzickej algebry. Implementácia vybraných fyzických operátorov (merge-sort, nested-loop join).
Formálne jazyky a automaty
- Regulárne jazyky. [Deterministické a nedeterministické konečné automaty, regulárne gramatiky, regulárne výrazy, ekvivalencia popisov regulárnych jazykov, pumpovacia lema, uzáverové vlastnosti.]
- Bezkontextové jazyky. [Bezkontextové gramatiky, normálne tvary, nedeterministické zásobníkové automaty, ekvivalencia zásobníkových automatov a bezkontextových gramatík, pumpovacia lema, uzáverové vlastnosti.]
- Rekurzívne vyčísliteľné a rekurzívne jazyky. [Turingove stroje, frázové gramatiky, ich ekvivalencia, uzáverové vlastnosti, univerzálny Turingov stroj, Turingova hypotéza.]
- Nerozhodnuteľné problémy. [Diagonalizácia, problém zastavenia, metódy dokazovania nerozhodnuteľnosti.]
- Miery zložitosti pre Turingove stroje [triedy zložitosti, kompresia pásky, zrýchľovanie výpočtov, vplyv redukcie počtu pások na zložitosť]
- Triedy P a NP [polynomiálna redukovateľnosť. Cook-Levinova veta a ďalšie NP-úplné problémy]
Efektívne algoritmy a dátové štruktúry
- Analýza časovej zložitosti algoritmov. (Definícia časovej zložitosti. O-notácia. Odhad časovej zložitosti rekurzívnych algoritmov používajúcich metódu rozdeľ a panuj.)
- Algoritmy pre triedenie. (Efektívne algoritmy triedenia porovnávaním. Triedenie v lineárnom čase. Dolný odhad časovej zložitosti každého triedenia porovnávaním.)
- Dátové štruktúry v poli. (Pole s dynamickou veľkosťou – vektor. Zásobník, fronta. Binárna halda a implementácia prioritnej fronty pomocou nej.)
- Usporiadané dátové štruktúry. (Binárne vyhľadávacie stromy. Usporiadaná množina, usporiadané asociatívne pole – slovník. Vyvažovanie binárnych stromov.)
- Hešovanie. (Kolízie a rôzne spôsoby ich riešenia. Narodeninový paradox. Množina, asociatívne pole.)
- Základné grafové algoritmy. (Reprezentácie grafu v pamäti. Prehľadávanie do hĺbky a do šírky. Topologické triedenie.)
- Najkratšie cesty v grafe. (Dijkstrov algoritmus, Floydov-Warshallov algoritmus.)
- Najlacnejšia kostra grafu. (Algoritmus Union-FindSet. Kruskalov algoritmus.)
- Násobenie matíc. (Naivný algoritmus. Strassenov algoritmus. Efektívne umocňovanie matice. Tranzitívny uzáver grafu pomocou umocňovania matíc.)
- Dynamické programovanie (Konkrétne príklady použitia. Charakterizácia problémov riešiteľných dynamickým programovaním. Porovnanie iteratívneho prístupu a rekurzie s memoizáciou.)
- Ďalšie princípy tvorby efektívnych algoritmov. (Rozdeľuj a panuj, pažravé algoritmy, princíp vyváženosti, voľba vhodnej dátovej štruktúry. Konkrétne príklady použitia.)
Princípy tvorby softvéru (platné od začiatku AR 2023/2024, teda už od štátnic v septembri 2023)
- Metódy vývoja softvéru, softvérové kontrakty (vodopádový model; I-I vývoj; agile; softvérové kontrakty)
- Manažment konfigurácií (ciele manažmentu konfigurácií; typy VCS; git; commit; branch; merge; rebase)
- Modelovanie domény (model; želané vlastnosti modelu; ciele modelovania domény; typy vzťahov medzi triedami v UML diagrame tried; abstrakcia atribútov, abstrakcia typov, abstrakcia závislostí)
- Dizajn (ciele dizajnu; dizajnové princípy; SOLID)
- Návrhové vzory a UML diagramy (návrhové vzory; UML diagram tried; UML sekvenčný diagram; code smells; refaktorizácia)
- Testovanie a kvalita softvéru (zabezpečovanie, plánovanie a kontrola kvality; techniky na zabezpečenie kvality softvéru; testovacia pyramída; testovateľný kód; dependency injection)
- Implementácia a integrácia (programovacie konvencie; continious integration; test driven development)