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ódPředmětKredityZSLS
NSWX004Operační systémy 42/1 KZ
NPRX041Programování v C++ 52/2 Z+Zk
NSWI143Architektura počítačů 32/0 Zk
NSWI098Principy překladačů 62/2 Z+Zk
NSWI163Úvod do middleware 10/1 KZ
NSWI162Sémantika programů 10/1 Z
NPRG054Vývoj vysoce výkonného software 62/2 Z+Zk
NPRG042Programování v paralelním prostředí 62/2 Z+Zk
NSWI090Počítačové sítě 32/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ódPředmětKredityZSLS
NPRX035Programování v jazyce C# 52/2 Z+Zk
NPRX013Programování v jazyce Java 52/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ódPředmětKredityZSLS
NPRX051Pokročilé programování v C++ 52/2 Z+Zk
NPRX038Pokročilé programování v jazyce C# 52/2 Z+Zk
NPRX021Pokročilé programování v jazyce Java 52/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ódPředmětKredityZSLS
NSWI154Nástroje pro vývoj software 20/2 Z
NPRX043Doporučené postupy v programování 52/2 KZ
NPRG024Návrhové vzory 30/2 KZ
NSWI041Úvod do softwarového inženýrství 52/2 Z+Zk
NSWI054Softwarové inženýrství pro spolehlivé systémy 30/2 Z
NSWI130Architektury softwarových systémů 52/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ódPředmětKredityZSLS
NMAX055Matematická analýza 2 52/2 Z+Zk
NPRX005Neprocedurální programování 52/2 Z+Zk
NPFL054Úvod do strojového učení 52/2 Z+Zk
NAIL120Úvod do umělé inteligence 52/2 Z+Zk
NPGR035Strojové učení v počítačovém vidění 52/2 Z+Zk
NPGR002Digitální zpracování obrazu 43/0 Zk
NPGR036Počítačové vidění 52/2 Z+Zk
NPGR003Základy počítačové grafiky 52/2 Z+Zk
NPGR019Realtime grafika na GPU 52/2 Z+Zk
NAIX028Úvod do robotiky 52/2 Z+Zk
NPRX037Programování mikrokontrolerů 52/2 Z+Zk
NPGR038Základy vývoje počítačových her 52/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ódPředmětKredityZSLS
NTIX061Algoritmy a datové struktury 2 52/2 Z+Zk
NDBX025Databázové systémy 52/2 Z+Zk
NAIX062Výroková a predikátová logika 52/2 Z+Zk
NSWX004Operační systémy 42/1 KZ
NPRX041Programování v C++ 52/2 Z+Zk
 Programování v jazyce C#/Java 52/2 Z+Zk
NTVY016Tělesná výchova III410/2 Z
NJAZ074Anglický jazyk pro středně pokročilé III210/2 Z
NTIX071Automaty a gramatiky 52/2 Z+Zk
NMAX059Pravděpodobnost a statistika 1 52/2 Z+Zk
NSWI143Architektura počítačů 32/0 Zk
 Pokročilé programování v jazyce C++/C#/Java 52/2 Z+Zk
 Povinně volitelné předměty    
NTVY017Tělesná výchova IV410/2 Z
NJAZ090Anglický jazyk pro středně pokročilé IV210/2 Z
NJAZ091Anglický jazyk310/0 Zk

3. rok studia

kódPředmětKredityZSLS
NDMX011Kombinatorika a grafy 1152/2 Z+Zk
NSWI098Principy překladačů 62/2 Z+Zk
NSWI163Úvod do middleware 10/1 KZ
NSWI162Sémantika programů 10/1 Z
NPRG045Ročníkový projekt 40/1 Z
 Povinně volitelné předměty    
 Volitelné předměty    
NSWI090Počítačové sítě 32/0 Zk
NPRG054Vývoj vysoce výkonného software 62/2 Z+Zk
NPRG042Programování v paralelním prostředí 62/2 Z+Zk
NSZZ031Vypracování a konzultace bakalářské práce 60/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.