Tato stránka vychází z podkladů pro tištěné studijní plány (tzv. Karolinku).
Systémové programování
Garantující pracoviště: Katedra distribuovaných a spolehlivých systémů Garant specializace: doc. Ing. Lubomír Bulej, Ph.D.Specializace Systémové programování je zaměřena na pochopení principů a rozvoj znalostí a dovedností potřebných pro návrh, vývoj a údržbu efektivního systémového software, který poskytuje základní stavební prvky pro software aplikační. Tematické okruhy proto zahrnují architektury počítačů, operační systémy, paralelní a distribuované systémy a middleware. Důraz je kladen také na hlubší znalost moderních programovacích jazyků používaných pro vývoj systémového software a schopnost používat moderní vývojové nástroje a postupy.
Společné povinné předměty programu Informatika
Povinné předměty společné pro všechny specializace jsou uvedeny v předchozí části.
Povinné předměty specializace
kód | Předmět | Kredity | ZS | LS | |
NSWX004 | Operační systémy | 4 | 2/1 KZ | — | |
NPRX041 | Programování v C++ | 5 | 2/2 Z+Zk | — | |
NSWI143 | Architektura počítačů | 3 | — | 2/0 Zk | |
NSWI098 | Principy překladačů | 6 | 2/2 Z+Zk | — | |
NSWI163 | Úvod do middleware | 1 | 0/1 KZ | — | |
NSWI162 | Sémantika programů | 1 | 0/1 Z | — | |
NPRG054 | Vývoj vysoce výkonného software | 6 | — | 2/2 Z+Zk | |
NPRG042 | Programování v paralelním prostředí | 6 | — | 2/2 Z+Zk | |
NSWI090 | Počítačové sítě | 3 | — | 2/0 Zk |
Povinně volitelné předměty
Podmínkou pro přihlášení ke státní závěrečné zkoušce je získání celkem 27 kreditů za všechny povinně volitelné předměty.Povinně volitelné předměty – skupina 1
Podmínkou pro přihlášení ke státní závěrečné zkoušce je získání 5 kreditů za předměty z této skupiny.
kód | Předmět | Kredity | ZS | LS | |
NPRX035 | Programování v jazyce C# | 5 | 2/2 Z+Zk | — | |
NPRX013 | Programování v jazyce Java | 5 | 2/2 Z+Zk | — |
Povinně volitelné předměty – skupina 2
Podmínkou pro přihlášení ke státní závěrečné zkoušce je získání 5 kreditů za předměty z této skupiny.
kód | Předmět | Kredity | ZS | LS | |
NPRX051 | Pokročilé programování v C++ | 5 | — | 2/2 Z+Zk | |
NPRX038 | Pokročilé programování v jazyce C# | 5 | — | 2/2 Z+Zk | |
NPRX021 | Pokročilé programování v jazyce Java | 5 | — | 2/2 Z+Zk |
Povinně volitelné předměty – skupina 3
Podmínkou pro přihlášení ke státní závěrečné zkoušce je získání 7 kreditů za předměty z této skupiny.
kód | Předmět | Kredity | ZS | LS | |
NSWI154 | Nástroje pro vývoj software | 2 | 0/2 Z | — | |
NPRX043 | Doporučené postupy v programování | 5 | — | 2/2 KZ | |
NPRG024 | Návrhové vzory | 3 | — | 0/2 KZ | |
NSWI041 | Úvod do softwarového inženýrství | 5 | — | 2/2 Z+Zk | |
NSWI054 | Softwarové inženýrství pro spolehlivé systémy | 3 | — | 0/2 Z | |
NSWI130 | Architektury softwarových systémů | 5 | 2/2 Z+Zk | — |
Povinně volitelné předměty – skupina 4
Podmínkou pro přihlášení ke státní závěrečné zkoušce je získání 10 kreditů za předměty z této skupiny.
kód | Předmět | Kredity | ZS | LS | |
NMAX055 | Matematická analýza 2 | 5 | 2/2 Z+Zk | — | |
NPRX005 | Neprocedurální programování | 5 | — | 2/2 Z+Zk | |
NPFL054 | Úvod do strojového učení | 5 | 2/2 Z+Zk | — | |
NAIL120 | Úvod do umělé inteligence | 5 | — | 2/2 Z+Zk | |
NPGR035 | Strojové učení v počítačovém vidění | 5 | 2/2 Z+Zk | — | |
NPGR002 | Digitální zpracování obrazu | 4 | 3/0 Zk | — | |
NPGR036 | Počítačové vidění | 5 | — | 2/2 Z+Zk | |
NPGR003 | Základy počítačové grafiky | 5 | 2/2 Z+Zk | — | |
NPGR019 | Realtime grafika na GPU | 5 | — | 2/2 Z+Zk | |
NAIX028 | Úvod do robotiky | 5 | 2/2 Z+Zk | — | |
NPRX037 | Programování mikrokontrolerů | 5 | 2/2 Z+Zk | — | |
NPGR038 | Základy vývoje počítačových her | 5 | — | 2/2 Z+Zk |
Doporučený průběh studia
Doporučený průběh studia zahrnuje všechny povinné předměty a některé další povinně volitelné nebo volitelné předměty. Posluchač si ho musí sám doplnit dalšími povinně volitelnými a volitelnými předměty podle vlastního výběru. Povinné předměty jsou v tabulkách doporučeného průběhu studia vyznačeny tučně, povinně volitelné běžným písmem a volitelné kurzívou.
1. rok studia
Doporučený průběh je společný pro všechny specializace, viz předchozí část.2. rok studia
kód | Předmět | Kredity | ZS | LS | |
NTIX061 | Algoritmy a datové struktury 2 | 5 | 2/2 Z+Zk | — | |
NDBX025 | Databázové systémy | 5 | 2/2 Z+Zk | — | |
NAIX062 | Výroková a predikátová logika | 5 | 2/2 Z+Zk | — | |
NSWX004 | Operační systémy | 4 | 2/1 KZ | — | |
NPRX041 | Programování v C++ | 5 | 2/2 Z+Zk | — | |
Programování v jazyce C#/Java | 5 | 2/2 Z+Zk | — | ||
NTVY016 | Tělesná výchova III | 4 | 1 | 0/2 Z | — |
NJAZ074 | Anglický jazyk pro středně pokročilé III | 2 | 1 | 0/2 Z | — |
NTIX071 | Automaty a gramatiky | 5 | — | 2/2 Z+Zk | |
NMAX059 | Pravděpodobnost a statistika 1 | 5 | — | 2/2 Z+Zk | |
NSWI143 | Architektura počítačů | 3 | — | 2/0 Zk | |
Pokročilé programování v jazyce C++/C#/Java | 5 | — | 2/2 Z+Zk | ||
Povinně volitelné předměty | |||||
NTVY017 | Tělesná výchova IV | 4 | 1 | — | 0/2 Z |
NJAZ090 | Anglický jazyk pro středně pokročilé IV | 2 | 1 | — | 0/2 Z |
NJAZ091 | Anglický jazyk | 3 | 1 | — | 0/0 Zk |
3. rok studia
kód | Předmět | Kredity | ZS | LS | |
NDMX011 | Kombinatorika a grafy 1 | 1 | 5 | 2/2 Z+Zk | — |
NSWI098 | Principy překladačů | 6 | 2/2 Z+Zk | — | |
NSWI163 | Úvod do middleware | 1 | 0/1 KZ | — | |
NSWI162 | Sémantika programů | 1 | 0/1 Z | — | |
NPRG045 | Ročníkový projekt | 4 | 0/1 Z | — | |
Povinně volitelné předměty | |||||
Volitelné předměty | |||||
NSWI090 | Počítačové sítě | 3 | — | 2/0 Zk | |
NPRG054 | Vývoj vysoce výkonného software | 6 | — | 2/2 Z+Zk | |
NPRG042 | Programování v paralelním prostředí | 6 | — | 2/2 Z+Zk | |
NSZZ031 | Vypracování a konzultace bakalářské práce | 6 | — | 0/4 Z | |
Povinně volitelné předměty | |||||
Volitelné předměty |
1 Předmět Kombinatorika a grafy 1 je v akademickém roce 2019/2020 vyučován v letním semestru pro studenty, kteří nastoupili v minulých letech. Pro studenty nastupující v roce 2019/2020 je určen běh v zimním semestru 2020/2021.
2 Výuka anglického jazyka NJAZ070, NJAZ072, 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 NJAZ071, NJAZ073, NJAZ075, NJAZ089 s rozsahem výuky 0/4 v každém semestru.
3 Zkoušku z anglického jazyka NJAZ091 je možné absolvovat v zimním nebo v letním semestru.
4 Místo jednoho z předmětů NTVY014, NTVY015, NTVY016 a 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 bakalářského studia.
Požadavky znalostí ke státní závěrečné zkoušce
1. Architektura počítačů
Výkonnost počítače a procesor, základní metriky a omezení.
Zpracování instrukcí procesorem, využití paralelizmu úrovni instrukcí, data, a vláken, predikce a spekulace.
Architektura paměťového subsystému, architektura cache a její vliv na výkon.
Multi-core a multi-socket systémy, koherence cache a její vliv na výkon, koherenční protokoly.
Komunikace se zařízeními, mechanizmus přerušení, přímý přístup do paměti.
2. Operační systémy
Správa procesů a vláken, plánování, komunikace a synchronizace procesů.
Správa paměti, adresové prostory, virtualizace, překlad adres, obsluha výpadků.
Sdílení paměti mezi adresovými prostory, paměťově mapované soubory.
Souborové systémy, koncepty a související rozhraní, typické diskové struktury.
Správa periferií, ovladače zařízení, obsluha přerušení a přenos dat.
3. Počítačové sítě
Linková vrstva, adresace v Ethernetu, propojování na úrovni fyzické a linkové vrstvy, VLAN.
Síťová vrstva, adresace v IPv4 a IPv6, statické směrování, směrovače a brány, NAT, IP tunely, VPN.
Transportní vrstva, adresace a porty v TCP a UDP, spolehlivost, řízení toku.
Servisní protokoly, ARP, DHCP, ICMP.
Aplikační rozhraní a abstrakce pro síťovou komunikaci, zabezpečení komunikace, autentizace, šifrování.
4. Překladače a programovací jazyky
Architektura překladače, AOT a JIT překlad, lexikální a syntaktická analýza.
Vnitřní reprezentace programu, základní bloky, optimizalizace programu překladačem.
Generování kódu pro cílový procesor.
Správa paměti v běhových prostředích, inicializace a likvidace objektů.
Významné prvky standardních knihoven (kontejnery, iterátory, algoritmy) a jejich aplikace.
5. Návrh a tvorba software
Principy objektového návrhu (SOLID) a jejich aplikace, návrh API, tříd a metod.
Paralelní programování, paměťový model, atomické operace a neblokující datové struktury.
Návrhové vzory pro sekvenční a paralelní algoritmy a programy.
Lokální a distribuovaná správa verzí, systémy pro sestavování software, nástroje pro testování software.