Tato stránka vychází z podkladů pro tištěné studijní plány (tzv. Karolinku).
Aktuální studijní plány najdete zde.
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.

