Tato stránka vychází z podkladů pro tištěné studijní plány (tzv. Karolinku).
Studijní plány 2024/2025 najdete zde.
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í.
Povinné předměty společné pro všechny specializace jsou uvedeny v předchozí části.
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 |
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 | — |
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 | — |
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 |
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 |
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 | Databázové přístupové metody | 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 | — | |
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 | |
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 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.
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 | 2 | 1 | — | 0/2 Z |
NJAZ091 | Anglický jazyk | 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 |
kód | Předmět | Kredity | ZS | LS | |
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 | |
NSWI098 | Principy překladačů | 5 | 6 | 2/2 Z+Zk | — |
NPRG054 | Vývoj vysoce výkonného software | 5 | 6 | — | 2/2 Z+Zk |
NPRG042 | Programování v paralelním prostředí | 5 | 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 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.
1. Architektura počítačů, operačních systémů a sítí
Organizace paměti za běhu programů.
Paměťová reprezentace polí, struktur a tříd. Cache a její vliv na výkonnost, NUMA. Virtuální paměť.
Provádění instrukcí procesorem. Procesy a vlákna, přepínání kontextu, irq, asynchronní I/O. Multicore, multisocket.
Síťová, linková a transportni vrstva. Propojování, VLAN. Adresování v TCP/IP.
2. Programovací jazyky
Životnost objektů. Komponenty, dependency injection.
Paralelní programování, vlákna. Ošetření chyb, výjimky.
Reflexe a introspekce. Principy dynamických jazyků. Funkcionální prvky objektových jazyků.
Statický vs. dynamický polymorfismus, generické programování, typová dedukce.
Standardní knihovny. Návrhové vzory.
Principy WWW, HTTP, HTTPS, URL. Statické webové stránky.
Principy webových aplikací. Programování na straně klienta. API webových aplikací, bezpečnost.
3. Softwarové inženýrství
Procesy vývoje software, analýza požadavků, testování, údržba, analýza rizik.
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í.
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.