Programování a vývoj software
Tato stránka vychází z podkladů pro tištěné studijní plány (tzv. Karolinku).
Specializace Programování a vývoj software je zaměřena na principy, technologie, jazyky a nástroje využitelné v oblasti návrhu, vývoje a údržby softwarových systémů. Výuka zahrnuje solidní teoretické základy informatiky, principy fungování počítačů a operačních systémů, programovací jazyky, moderní paralelní, mobilní a internetové technologie i metody softwarového inženýrství.
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 | — | |
NSWI142 | Programování webových aplikací | 5 | 2/2 Z+Zk | — | |
NSWI154 | Nástroje pro vývoj software | 2 | 0/2 Z | — | |
NSWI041 | Úvod do softwarového inženýrství | 5 | — | 2/2 Z+Zk | |
NPRG043 | Doporučené postupy v programování | 5 | — | 2/2 KZ |
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 37 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 | |
NPRG013 | Programování v jazyce Java | 5 | 2/2 Z+Zk | — | |
NPRG035 | Programování v jazyce C# | 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í 10 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 | |
NPRG021 | Pokročilé programování v jazyce Java | 5 | — | 2/2 Z+Zk | |
NPRG038 | Pokročilé programování v jazyce C# | 5 | — | 2/2 Z+Zk | |
NSWI153 | Pokročilé programování webových aplikací | 5 | — | 2/2 Z+Zk | |
NPRG056 | Programování mobilních zařízení | 3 | 0/2 Z | — |
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í 10 kreditů za předměty z této skupiny.
kód | Předmět | Kredity | ZS | LS | |
NPRG024 | Návrhové vzory | 3 | — | 0/2 KZ | |
NSWI143 | Architektura počítačů | 3 | — | 2/0 Zk | |
NPRG036 | Datové formáty | 5 | 2/2 Z+Zk | — | |
NSWI130 | Architektury softwarových systémů | 5 | 2/2 Z+Zk | — | |
NSWI090 | Počítačové sítě | 3 | — | 2/0 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í 6 kreditů za předměty z této skupiny.
kód | Předmět | Kredity | ZS | LS | |
NSWI098 | Principy překladačů | 6 | 2/2 Z+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 |
Povinně volitelné předměty – skupina 5
Samostatný limit pro skupinu 5 není stanoven. Z této skupiny tedy není nutné absolvovat žádný předmět, pokud je splněn celkový počet 37 kreditů za absolvované předměty z předchozích skupin.
kód | Předmět | Kredity | ZS | LS | |
NPGR038 | Základy vývoje počítačových her | 5 | — | 2/2 Z+Zk | |
NPGR003 | Základy počítačové grafiky | 5 | 2/2 Z+Zk | — | |
NDBI007 | Principy organizace dat | 4 | 2/1 Z+Zk | — | |
NDBI040 | Moderní databázové systémy | 5 | — | 2/2 Z+Zk | |
NSWI162 | Sémantika programů | 1 | 0/1 Z | — | |
NSWI163 | Úvod do middleware | 1 | 0/1 KZ | — | |
NDMI100 | Úvod do kryptografie | 3 | — | 2/0 Zk | |
NAIL120 | Úvod do umělé inteligence | 5 | — | 2/2 Z+Zk | |
NPFL129 | Úvod do strojového učení v Pythonu | 5 | 2/2 Z+Zk | — | |
NPRG005 | Neprocedurální programování | 5 | — | 2/2 Z+Zk | |
NMAI055 | Matematická analýza 2 | 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
Společné pro všechny specializace, viz předchozí část.2. rok studia
kód | Předmět | Kredity | ZS | LS | |
Programování v jazyce Java/C++/C# | 5 | 2/2 Z+Zk | — | ||
NDBI025 | Databázové systémy | 5 | 2/2 Z+Zk | — | |
NSWI142 | Programování webových aplikací | 5 | 2/2 Z+Zk | — | |
NTIN061 | Algoritmy a datové struktury 2 | 5 | 2/2 Z+Zk | — | |
NAIL062 | Výroková a predikátová logika | 5 | 2/2 Z+Zk | — | |
NDMI011 | Kombinatorika a grafy 1 | 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 | — |
Pokročilé programování v jazyce Java/C++/C# | 5 | — | 2/2 Z+Zk | ||
NTIN071 | Automaty a gramatiky | 5 | — | 2/2 Z+Zk | |
NMAI059 | Pravděpodobnost a statistika 1 | 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 | |
NSWI004 | Operační systémy | 4 | 2/1 KZ | — | |
Programování v jazyce Java/C++/C# | 4 | 5 | 2/2 Z+Zk | — | |
Pokročilé programování v jazyce Java/C++/C# | 4 | 5 | — | 2/2 Z+Zk | |
NSWI154 | Nástroje pro vývoj software | 5 | 2 | 0/2 Z | — |
NSWI041 | Úvod do softwarového inženýrství | 5 | 5 | — | 2/2 Z+Zk |
NPRG043 | Doporučené postupy v programování | 5 | 5 | — | 2/2 KZ |
NSWI098 | Principy překladačů | 6 | 6 | 2/2 Z+Zk | — |
NPRG054 | Vývoj vysoce výkonného software | 6 | 6 | — | 2/2 Z+Zk |
NPRG042 | Programování v paralelním prostředí | 6 | 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.
4 Studenti si ve 3. ročníku typicky zapisují ten z vybraných programovacích jazyků, který neabsolvovali v 2. ročníku.
5 Předmět lze dle zájmu a znalostí studenta a s ohledem na další studijní povinnosti absolvovat i ve 2. ročníku.
6 Pro splnění předepsaného počtu kreditů je nutné absolvovat alespoň jeden z těchto předmětů. Předměty je vhodné kvůli návaznostem absolvovat ve 3. ročníku.
Požadavky znalostí ke státní závěrečné zkoušce
1. Architektura počítačů, operačních systémů a sítí
Všechny body dle zkušebního okruhu "4. Architektura počítačů a operačních systémů" ve společné části a dále:
Organizace paměti za běhu programů. Paměťová reprezentace datových struktur. Cache a její vliv na výkonnost. Virtuální paměť. Provádění instrukcí procesorem. Procesy a vlákna, přepínání kontextu. Multicore, multisocket. Síťová, linková a transportni vrstva. Směrování, VLAN, NAT. Adresování v TCP/IP.
Související předměty
- –NSWI120 Principy počítačů
- –NSWI170 Počítačové systémy
- –NSWI143 Architektura počítačů
- –NSWI090 Počítačové sítě
- –NSWI170 Počítačové systémy
2. Programovací jazyky
Všechny body dle zkušebního okruhu "3. Programovací jazyky" ve společné části a dále:
Paralelní programování a synchronizace.
Návrhové vzory. Komponenty, dependency injection. Reflexe a introspekce.
Statický vs. dynamický polymorfismus, generické programování, typová dedukce.
Principy dynamických jazyků.
Principy WWW, HTTP, HTTPS, URL. Statické webové stránky. Principy webových aplikací,
programování na straně klienta. API webových aplikací, bezpečnost.
Související předměty
- –NSWI170 Počítačové systémy
- –Pokročilé programování v jazyce Java/C++/C#
- –NSWI142 Programování webových aplikací
- –NPRG024 Návrhové vzory
- –Pokročilé programování v jazyce Java/C++/C#
3. Softwarové inženýrství
Procesy vývoje software, analýza požadavků, testování a údržba software.
Návrh architektury software. Správa verzí. Sestavování. Měření výkonnosti.
Návrh API, tříd a metod, objektový návrh.
Základy bezpečnosti webových aplikací.
Související předměty
- –NSWI041 Úvod do softwarového inženýrství
- –NPRG043 Doporučené postupy v programování
- –NSWI154 Nástroje pro vývoj software
- –NSWI130 Architektury softwarových systémů
- –NPRG043 Doporučené postupy v programování
4. Databáze
Architektury databázových systémů.
Konceptuální, logická a fyzická úroveň pohledů na data. Algoritmy návrhu schémat relací, normální formy, referenční integrita.
Transakční zpracování.
Přehled SQL. Základní dotazy, seskupování dat a agregace, spojování tabulek, vnořené dotazy. Uložené procedury, triggery, funkce.
Moderní databázové systémy, NoSQL databáze, grafové databáze.
Související předměty
- –NDBI025 Databázové systémy
- –NDBI007 Principy organizace dat
- –NDBI040 Moderní databázové systémy
- –NDBI007 Principy organizace dat