Programování a vývoj software

Tato stránka vychází z podkladů pro tištěné studijní plány (tzv. Karolinku).

Garantující pracoviště: Katedra softwarového inženýrství Koordinátor specializace: RNDr. Filip Zavoral, Ph.D.

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ódPředmětKredityZSLS
NSWI004Operační systémy 42/1 KZ
NPRG041Programování v C++ 52/2 Z+Zk
NSWI142Programování webových aplikací 52/2 Z+Zk
NSWI154Nástroje pro vývoj software 20/2 Z
NSWI041Úvod do softwarového inženýrství 52/2 Z+Zk
NPRG043Doporučené postupy v programování 52/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ódPředmětKredityZSLS
NPRG013Programování v jazyce Java 52/2 Z+Zk
NPRG035Programování v jazyce C# 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í 10 kreditů za předměty z této skupiny.

kódPředmětKredityZSLS
NPRG051Pokročilé programování v C++ 52/2 Z+Zk
NPRG021Pokročilé programování v jazyce Java 52/2 Z+Zk
NPRG038Pokročilé programování v jazyce C# 52/2 Z+Zk
NSWI153Pokročilé programování webových aplikací 52/2 Z+Zk
NPRG056Programování mobilních zařízení 30/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ódPředmětKredityZSLS
NPRG024Návrhové vzory 30/2 KZ
NSWI143Architektura počítačů 32/0 Zk
NPRG036Datové formáty 52/2 Z+Zk
NSWI130Architektury softwarových systémů 52/2 Z+Zk
NSWI090Počítačové sítě 32/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ódPředmětKredityZSLS
NSWI098Principy překladačů 62/2 Z+Zk
NPRG054Vývoj vysoce výkonného software 62/2 Z+Zk
NPRG042Programování v paralelním prostředí 62/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ódPředmětKredityZSLS
NPGR038Základy vývoje počítačových her 52/2 Z+Zk
NPGR003Základy počítačové grafiky 52/2 Z+Zk
NDBI007Principy organizace dat 42/1 Z+Zk
NDBI040Moderní databázové systémy 52/2 Z+Zk
NSWI162Sémantika programů 10/1 Z
NSWI163Úvod do middleware 10/1 KZ
NDMI100Úvod do kryptografie 32/0 Zk
NAIL120Úvod do umělé inteligence 52/2 Z+Zk
NPFL129Úvod do strojového učení v Pythonu 52/2 Z+Zk
NPRG005Neprocedurální programování 52/2 Z+Zk
NMAI055Matematická analýza 2 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

Společné pro všechny specializace, viz předchozí část.

2. rok studia

kódPředmětKredityZSLS
 Programování v jazyce Java/C++/C# 52/2 Z+Zk
NDBI025Databázové systémy 52/2 Z+Zk
NSWI142Programování webových aplikací 52/2 Z+Zk
NTIN061Algoritmy a datové struktury 2 52/2 Z+Zk
NAIL062Výroková a predikátová logika 52/2 Z+Zk
NDMI011Kombinatorika a grafy 1 52/2 Z+Zk
NJAZ074Anglický jazyk pro středně pokročilé III110/2 Z
NTVY016Tělesná výchova III310/2 Z
 Pokročilé programování v jazyce Java/C++/C# 52/2 Z+Zk
NTIN071Automaty a gramatiky 52/2 Z+Zk
NMAI059Pravděpodobnost a statistika 1 52/2 Z+Zk
NPRG045Ročníkový projekt 40/1 Z
NJAZ090Anglický jazyk pro středně pokročilé IV110/2 Z
NJAZ091Anglický jazyk — zkouška pro bakaláře210/0 Zk
NTVY017Tělesná výchova IV310/2 Z
 Povinně volitelné předměty    
 Volitelné předměty    

3. rok studia

kódPředmětKredityZSLS
NSWI004Operační systémy 42/1 KZ
 Programování v jazyce Java/C++/C#452/2 Z+Zk
 Pokročilé programování v jazyce Java/C++/C#452/2 Z+Zk
NSWI154Nástroje pro vývoj software520/2 Z
NSWI041Úvod do softwarového inženýrství552/2 Z+Zk
NPRG043Doporučené postupy v programování552/2 KZ
NSWI098Principy překladačů662/2 Z+Zk
NPRG054Vývoj vysoce výkonného software662/2 Z+Zk
NPRG042Programování v paralelním prostředí662/2 Z+Zk
NSZZ031Vypracování a konzultace bakalářské práce 60/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ě

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

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ů

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