Systémové programování
Tato stránka vychází z podkladů pro tištěné studijní plány (tzv. Karolinku).
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 | |
NSWI004 | Operační systémy | 4 | 2/1 KZ | — | |
NPRG041 | Programování v C++ | 5 | 2/2 Z+Zk | — | |
NSWI143 | Architektura počítačů | 3 | — | 2/0 Zk | |
NSWI090 | Počítačové sítě | 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 |
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 | |
NPRG035 | Programování v jazyce C# | 5 | 2/2 Z+Zk | — | |
NPRG013 | 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 | |
NPRG051 | Pokročilé programování v C++ | 5 | — | 2/2 Z+Zk | |
NPRG038 | Pokročilé programování v jazyce C# | 5 | — | 2/2 Z+Zk | |
NPRG021 | 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 | — | |
NPRG043 | 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 | |
NMAI055 | Matematická analýza 2 | 5 | 2/2 Z+Zk | — | |
NPRG005 | Neprocedurální programování | 5 | — | 2/2 Z+Zk | |
NPFL054 | Úvod do strojového učení v systému R | 5 | — | 2/2 Z+Zk | |
NPFL129 | Úvod do strojového učení v Pythonu | 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 | |
NAIL028 | Úvod do robotiky | 5 | 2/2 Z+Zk | — | |
NPRG037 | Programování mikrokontrolerů | 5 | 2/2 Z+Zk | — | |
NPGR038 | Základy vývoje počítačových her | 5 | — | 2/2 Z+Zk | |
NDMI100 | Úvod do kryptografie | 3 | — | 2/0 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 | |
NTIN061 | Algoritmy a datové struktury 2 | 5 | 2/2 Z+Zk | — | |
NAIL062 | Výroková a predikátová logika | 5 | 2/2 Z+Zk | — | |
NSWI004 | Operační systémy | 4 | 2/1 KZ | — | |
NPRG041 | Programování v C++ | 5 | 2/2 Z+Zk | — | |
Programování v jazyce C#/Java | 5 | 2/2 Z+Zk | — | ||
NJAZ074 | Anglický jazyk pro středně pokročilé III | 1 | 1 | 0/2 Z | — |
NTVY016 | Tělesná výchova III | 3 | 1 | 0/2 Z | — |
NTIN071 | Automaty a gramatiky | 5 | — | 2/2 Z+Zk | |
NMAI059 | Pravděpodobnost a statistika 1 | 5 | — | 2/2 Z+Zk | |
NSWI090 | Počítačové sítě | 3 | — | 2/0 Zk | |
NSWI143 | Architektura počítačů | 3 | — | 2/0 Zk | |
Pokročilé programování v jazyce C++/C#/Java | 5 | — | 2/2 Z+Zk | ||
NPRG045 | Ročníkový projekt | 4 | — | 0/1 Z | |
NJAZ090 | Anglický jazyk pro středně pokročilé IV | 1 | 1 | — | 0/2 Z |
NJAZ091 | Anglický jazyk — zkouška pro bakaláře | 2 | 1 | — | 0/0 Zk |
NTVY017 | Tělesná výchova IV | 3 | 1 | — | 0/2 Z |
Povinně volitelné předměty | |||||
Volitelné předměty |
3. rok studia
kód | Předmět | Kredity | ZS | LS | |
NDMI011 | Kombinatorika a grafy 1 | 5 | 2/2 Z+Zk | — | |
NDBI025 | Databázové systémy | 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 | — | |
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 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.
2 Zkoušku z anglického jazyka NJAZ091 je možné absolvovat v zimním nebo v letním semestru.
3 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
V první části studijních plánů programu jsou popsány okruhy státní zkoušky společné pro všechny specializace. Studenti specializace Systémové programování budou navíc zkoušeni v rámci tématických oblastí uvedených níže. Pro každou oblast je uveden orientační přehled témat a předměty v rámci specializace, které danou oblast pokrývají. V případě tématického překryvu s požadavky ze společné části závěrečné zkoušky se v rámci specializace očekává hlubší pochopení problematiky. Detailnější přehled požadavků odrážející požadovanou hloubku znalostí bude k dispozici v elektronické podobě v dostatečném předstihu před konáním státní závěrečné zkoušky.
1. Architektura počítačů
Výkonnost počítače a procesoru, metriky a omezení.
Zpracování instrukcí procesorem, paralelismus, predikce a spekulace.
Architektura paměťového subsystému, architektura cache.
Multi-core a multi-socket systémy, koherence cache.
Komunikace se zařízeními.
Související předměty:
- –NSWI143 Architektura počítačů
- –NPRG054 Vývoj vysoce výkonného software
2. Operační systémy
Správa procesů a vláken, plánování, komunikace, synchronizace.
Správa paměti, stránkování, správa paměti uvnitř procesů, sdílení paměti.
Souborové systémy, koncepty a rozhraní, typické diskové struktury.
Správa periferií, ovladače zařízení.
Související předměty:
- –NSWI004 Operační systémy
3. Počítačové sítě
Linková vrstva, adresace v Ethernetu, VLAN.
Síťová vrstva, adresace v IPv4 a IPv6, statické směrování, NAT, IP tunely, VPN.
Transportní vrstva, adresace v TCP a UDP, spolehlivost, řízení toku.
Aplikační rozhraní a abstrakce pro síťovou komunikaci.
Zabezpečení komunikace, autentizace, šifrování.
Související předměty:
- –NSWI090 Počítačové sítě
4. Překladače a programovací jazyky
Architektura překladače, AOT a JIT překlad.
Vnitřní reprezentace programu.
Optimalizace programu překladačem.
Generování kódu pro cílový procesor.
Související předměty:
- –NSWI098 Principy překladačů
Správa paměti v běhových prostředích, životní cyklus objektů. Polymorfismus, generické programování, typová inference. Významné prvky standardních knihoven a jejich aplikace.
Související předměty:
Témata jsou pokryta povinnými a povinně volitelnými předměty zaměřenými na programovací jazyky. V rámci specializace je nutné absolvovat minimálně 3 takové předměty:
- –NPRG041 Programování v C++
- –V rámci PV předmětů skupiny 1: NPRG013 Programování v jazyce Java nebo NPRG035 Programování v jazyce C#.
- –V rámci PV předmětů skupiny 2: NPRG051 Pokročilé programování v C++ nebo NPRG021 Pokročilé programování v jazyce Java nebo NPRG038 Pokročilé programování v jazyce C#.
- –V rámci PV předmětů skupiny 1: NPRG013 Programování v jazyce Java nebo NPRG035 Programování v jazyce C#.
5. Návrh a tvorba software
Principy objektového návrhu, návrh API, tříd a metod, návrhové vzory.
Související předměty:
Téma prostupuje řadou povinných a povinně volitelných předmětů zaměřených na programování. Specificky v tomto případě se očekává doplnění znalostí absolvováním vhodné kombinace PV předmětů ze skupiny 3.
- –NPRG043 Doporučené postupy v programování nebo NPRG024 Návrhové vzory
- –NSWI041 Úvod do softwarového inženýrství nebo NSWI130 Architektury softwarových systémů nebo NSWI054 Softwarové inženýrství pro spolehlivé systémy
Paralelní programování, paměťový model, atomické operace a neblokující datové struktury.
Související předměty:
- –NPRG042 Programování v paralelním prostředí
Správa verzí, systémy pro sestavování software, nástroje pro testování software.
Související předměty:
- –NSWI154 Nástroje pro vývoj software
V rámci specializace se očekává, že získání potřebných znalostí a dovedností v této oblasti bude primárně výsledkem absolvování předmětů, u kterých je tvorba programů důležitým aspektem hodnocení. Základem jsou povinné a povinně volitelné předměty (skupiny 1 a 2) věnované programovacím jazykům doplněné o vhodný výběr povinně volitelných předmětů ze skupiny 3.