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í Garant 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
NSWX004Operační systémy 42/1 KZ
NPRX041Programování v C++ 52/2 Z+Zk
NSWX142Programová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
NPRX043Doporuč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
NPRX013Programování v jazyce Java 52/2 Z+Zk
NPRX035Programová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
NPRX051Pokročilé programování v C++ 52/2 Z+Zk
NPRX021Pokročilé programování v jazyce Java 52/2 Z+Zk
NPRX038Pokročilé programování v jazyce C# 52/2 Z+Zk
NSWX153Pokročilé programování webových aplikací 52/2 Z+Zk
NPRX056Programová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
NPRX036Datové 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
NDBX007Databázové přístupové metody 42/1 Z+Zk
NDBI040Moderní databázové koncepty 52/2 Z+Zk
NSWI162Sémantika programů 10/1 Z
NSWI163Úvod do middleware 10/1 KZ
NPFL054Úvod do strojového učení 52/2 Z+Zk
NAIL120Úvod do umělé inteligence 52/2 Z+Zk
NPRX005Neprocedurální programování 52/2 Z+Zk
NMAX055Matematická 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
NDBX025Databázové systémy 52/2 Z+Zk
NSWX142Programování webových aplikací 52/2 Z+Zk
NTIX061Algoritmy a datové struktury 2 52/2 Z+Zk
NAIX062Výroková a predikátová logika 52/2 Z+Zk
NDMX011Kombinatorika a grafy 1152/2 Z+Zk
NJAZ074Anglický jazyk pro středně pokročilé III210/2 Z
NTVY016Tělesná výchova III410/2 Z
 Pokročilé programování v jazyce Java/C++/C# 52/2 Z+Zk
NTIX071Automaty a gramatiky 52/2 Z+Zk
NMAX059Pravdě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ý jazyk310/0 Zk
NTVY017Tělesná výchova IV410/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#552/2 Z+Zk
 Pokročilé programování v jazyce Java/C++/C#552/2 Z+Zk
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 Předmět Kombinatorika a grafy 1 jsou vyučován v akademickém roce 2019/2020 v letním semestru pro studenty, kteří nastoupili v minulých letech. Pro studenty nastupující v roce 2019/20 je určen běh v zimním semestru 2020/21.

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

3 Zkoušku z anglického jazyka NJAZ091 je možné absolvovat v zimním nebo v letním semestru.

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

5 Studenti si ve 3. ročníku typicky zapisují ten z vybraných programovacích jazyků, který neabsolvovali v 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í
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, URL. Statické webové stránky. Principy webových aplikací. Programování na straně klienta. API webových aplikací.

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ů. Normální formy. Návrh db schématu, klíče, indexy, integritní omezení. Transakční zpracování, vlastnosti transakcí. SQL - běžné příkazy, vnořené dotazy. SQL procedury a funkce, triggery.