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

Programování a vývoj software

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
NDBI007Databázové přístupové metody 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
NPFL129Úvod do strojového učení v Pythonu 52/2 Z+Zk
NAIL120Úvod do umělé inteligence 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é IV210/2 Z
NJAZ091Anglický jazyk210/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
 Programování v jazyce Java/C++/C#452/2 Z+Zk
 Pokročilé programování v jazyce Java/C++/C#452/2 Z+Zk
NSWI098Principy překladačů562/2 Z+Zk
NPRG054Vývoj vysoce výkonného software562/2 Z+Zk
NPRG042Programování v paralelním prostředí562/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 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í
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.

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
Ž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.

Související předměty

NSWI170 Počítačové systémy
Programování v jazyce Java/C++/C#
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í, ú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í.

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 Databázové přístupové metody
NDBI040 Moderní databázové koncepty