Informatika - Softwarové a datové inženýrství

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í
Oborový garant: Prof. RNDr. Tomáš Skopal, Ph.D.

Zaměření:

softwarové inženýrství
vývoj software
webové inženýrství
databázové systémy
analýza a zpracování rozsáhlých dat

Absolvent má hluboké softwarově a datově inženýrské znalosti v rámci zvoleného zaměření. Tyto znalosti nesledují pouze aktuální technologické trendy, ale jejich jádro je tvořeno hlubokým teoretickým základem. Absolvováním zaměření Softwarové inženýrství umí absolvent analyzovat požadavky na kvalitu a funkcionalitu softwarových řešení, navrhovat odpovídající architekturu a řídit proces vývoje a monitorování kvality. Absolvent zaměření Vývoj software je schopen navrhovat architekturu software a vést jeho implementaci v různých prostředích včetně paralelních nebo cloudových. Zaměření Webové inženýrství učí absolventy navrhovat a implementovat software fungující v prostředí webu, cloudu a dalších síťových technologií s důrazem na škálovatelnost, robustnost a bezpečnost. Se zaměřením Databázové systémy je absolvent připraven navrhovat a integrovat schémata v různých typech databází a na jejich základě pak implementovat a administrovat databázové aplikace. Absolvent zaměření Analýza a zpracování rozsáhlých dat se uplatní jako vědecky orientovaný odborník na dobývání znalostí z dat a jejich interpretaci uživateli, např. jako datový analytik (data scientist).

Povinné předměty

kódPředmětKredityZSLS
NTIN090Základy složitosti a vyčíslitelnosti 42/1 Z+Zk
NTIN066Datové struktury 1 62/2 Z+Zk
NSZZ023Diplomová práce I 60/4 Z
NSZZ024Diplomová práce II 90/6 Z
NSZZ025Diplomová práce III 150/10 Z

Týmový projekt

Student si volí právě jeden z trojice předmětů Softwarový projekt, Výzkumný projekt a Firemní projekt.

kódPředmětKredityZSLS
NPRG069Softwarový projekt 120/8 Z0/8 Z
NPRG070Výzkumný projekt 90/6 Z0/6 Z
NPRG071Firemní projekt 60/4 Z0/4 Z
NPRG072Zvýšený rozsah projektu 30/2 Z0/2 Z

Povinně volitelné profilující předměty

Je požadováno splnění povinně volitelných profilujících předmětů z následujícího seznamu v rozsahu alespoň 41 kreditů. Předměty je doporučené volit tak, aby pokrývaly zvolené studijní okruhy státní závěrečné zkoušky.

kódPředmětKredityZSLS
NPRG014Koncepty moderních programovacích jazyků 40/3 Z
NPRG042Programování v paralelním prostředí 62/2 KZ
NPRG043Doporučené postupy v programování 52/2 KZ
NPRG024Návrhové vzory 30/2 KZ
NSWI126Pokročilé nástroje pro vývoj a monitorování software 20/2 Z
NSWI150Virtualizace a cloud computing 32/0 Zk
NSWI153Pokročilé programování webových aplikací 52/2 Z+Zk
NSWI145Webové služby 52/2 Z+Zk
NSWI144Data na Webu 52/1 Z+Zk
NSWI130Architektury softwarových systémů 52/2 Z+Zk
NSWI026Pokročilé aspekty softwarového inženýrství 52/2 Z+Zk
NTIN043Formální základy softwarového inženýrství 52/2 Z+Zk
NDBI034Vyhledávání multimediálního obsahu na webu 42/1 Z+Zk
NDBI040Moderní databázové systémy 52/2 Z+Zk
NDBI048Data Science 52/2 Z+Zk
NDBI042Techniky vizualizace dat 42/1 Z+Zk
NPFL114Hluboké učení173/2 Z+Zk
NPFL138Hluboké učení183/4 Z+Zk
NDBI023Dobývání znalostí 52/2 Z+Zk
NDBI016Transakce 32/0 Zk
NDBI049Dotazovací jazyky 1 32/0 Zk
NDBI050Dotazovací jazyky 2 32/0 Zk
NDBI021Uživatelské preference a pokročilé metody doporučování 42/1 Z+Zk
NSWI072Algoritmy komprese dat 32/0 Zk

1 Předmět NPFL114 byl vyučován do roku 2022/2023, předmět NPFL138 je vyučován od roku 2023/2024, předměty jsou vzájemně neslučitelné.

Povinně volitelné předměty

Je požadováno splnění povinně volitelných předmětů z následujícího seznamu v rozsahu alespoň 15 kreditů.

kódPředmětKredityZSLS
NMAI060Pravděpodobnostní metody 32/0 Zk
NPRG054Vývoj vysoce výkonného software 62/2 KZ
NPRG058Pokročilé programování v paralelním prostředí 62/2 Z+Zk
NSWI035Principy distribuovaných systémů 32/0 Zk
NSWI080Middleware 42/1 KZ
NSWI101Modely a verifikace chování systémů 52/2 Z+Zk
NSWI131Vyhodnocování výkonnosti počítačových systémů 42/1 Z+Zk
NSWI149Softwarové inženýrství v praxi 32/0 Z
NSWI152Vývoj cloudových aplikací 30/2 Z
NTIN067Datové struktury 2 32/0 Zk
NSWI166Úvod do doporučovacích systémů a uživatelských preferencí 42/1 Z+Zk
NPFL129Úvod do strojového učení v Pythonu 52/2 Z+Zk

Státní závěrečná zkouška

Student si vybere tři okruhy podle zvoleného zaměření. Dva z těchto okruhů jsou povinné pro zvolené zaměření, třetí je volitelný.

Zkušební okruhy

1. Analýza a architektury software (povinný pro zaměření: Softwarové inženýrství)
2. Rozšířené programování (povinný pro zaměření: Softwarové inženýrství, Vývoj software)
3. Softwarové technologie (povinný pro zaměření: Vývoj software)
4. Webové technologie (povinný pro zaměření: Webové inženýrství)
5. Formální základy databázových systémů a dotazovací jazyky (povinný pro zaměření: Webové inženýrství, Databázové systémy)
6. Implementace databázových systémů (povinný pro zaměření: Databázové systémy)
7. Zpracování rozsáhlých a nestrukturovaných dat (povinný pro zaměření: Analýza a zpracování rozsáhlých dat)
8. Data mining (povinný pro zaměření: Analýza a zpracování rozsáhlých dat)

Zkušební požadavky

1. Analýza a architektury software
Procesy vývoje SW a jejich fáze. Analýza požadavků na SW - principy, postupy, využití jazyka UML (popis struktury a chování SW). Principy a postupy návrhu SW. Testování SW (V-model, činnosti v testování, typy testů, testovací techniky). Projektové řízení (SW projekt, metody projektového řízení, plánování SW projektů). SW architektura a její význam v procesu vývoje SW. Notace pro modelování a dokumentaci SW architektury (Bass, 4+1, ArchiMate, C4 model, apod). Druhy pohledů na SW architekturu a jejich význam. Klasifikace atributů kvality SW architektury, jejich popis pomocí scénářů a taktik. Architektonické vzory. Monolit, modularizovaný monolit, microservices, servisně orientovaná architektura, doménově-řízená architektura. Algebraické metody formálních specifikací, vícedruhové algebry, iniciální modely. Temporální logika. Formální základy jazyka UML. OCL jako specifikační jazyk a formální základy dle specifikace.

Doporučené předměty

kódPředmětKredityZSLS
NSWI130Architektury softwarových systémů 52/2 Z+Zk
NSWI026Pokročilé aspekty softwarového inženýrství 52/2 Z+Zk
NTIN043Formální základy softwarového inženýrství 52/2 Z+Zk

2. Rozšířené programování
Moderní konstrukce a pokročilé aspekty programovacích jazyků. Generické programování a metaprogramování, generika a šablony, politiky, traits, typová dedukce, reflexe. Výjimky a bezpečné programování v prostředí s výjimkami. Implementace objektových vlastností, běhová podpora, volací konvence, garbage collection. Paralelní programování, Amdahlův zákon, synchronizační primitiva, task stealing. Návrhové vzory a jejich využití. Skriptovací jazyky, prototype-based jazyky. Domain Specific Languages. Funkcionální programování. Principy tvorby kvalitního kódu, doporučené postupy, refaktorizace. Testování funkčnosti, hledání chyb, monitorování programů.

Doporučené předměty

kódPředmětKredityZSLS
NPRG014Koncepty moderních programovacích jazyků 40/3 Z
NPRG024Návrhové vzory 30/2 KZ
NPRG043Doporučené postupy v programování 52/2 KZ
NPRG042Programování v paralelním prostředí 62/2 KZ

3. Softwarové technologie
Architektury operačních systémů, správa procesů, správa paměti, komunikace a synchronizace, paralelismus, virtualizace, stránkování. Souborové systémy, přístupová práva a bezpečnost. Multiplatformní a přenositelné aplikace. Testování a monitorování funkčnosti a výkonnosti. Architektura webových aplikací, skriptování na straně serveru a klienta. Cloudové služby, IaaS, PaaS a SaaS. Virtualizace, hardwarově asistovaná virtualizace, paravirtualizace, kontejnery, Linux namespaces, cgroups, docker, orchestrace, edge computing, IoT. Vyvažování zátěže, vysoká dostupnost. MapReduce.

Doporučené předměty

kódPředmětKredityZSLS
NSWI126Pokročilé nástroje pro vývoj a monitorování software 20/2 Z
NSWI153Pokročilé programování webových aplikací 52/2 Z+Zk
NSWI150Virtualizace a cloud computing 32/0 Zk

4. Webové technologie
Obecný přehled základní webových technologií. Síťové služby pro webové technologie. Webové služby. Architektura klient-server aplikací, skriptování na straně serveru a klienta, webové frameworky. Použití databázových systémů ve webových aplikacích, NoSQL databáze, multimediální databáze. Indexace a prohledávání dokumentů, principy fungování webových vyhledávačů. Linked Data - principy, datový model RDF a jeho serializace, dotazovací jazyk SPARQL, často používané slovníky, SHACL, Solid.

Doporučené předměty

kódPředmětKredityZSLS
NSWI130Architektury softwarových systémů 52/2 Z+Zk
NSWI153Pokročilé programování webových aplikací 52/2 Z+Zk
NSWI144Data na Webu 52/1 Z+Zk
NSWI145Webové služby 52/2 Z+Zk
NDBI034Vyhledávání multimediálního obsahu na webu 42/1 Z+Zk
NDBI040Moderní databázové systémy 52/2 Z+Zk

5. Formální základy databázových systémů a dotazovací jazyky
Relační kalkuly, relační algebry. Relační úplnost. Bezpečné výrazy, ekvivalence relačních dotazovacích jazyků. Věta o tranzitivním uzávěru relace. Sémantika SQL. Standardy SQL. Objektové rozšíření relačního modelu dat. Databáze textů – Booleovský a vektorový model, vyhledávání a indexování, uspořádání odpovědí, top-k operátor. Datalog. Rekurze v SQL. Datový model XML. Datový model RDF a jeho serializace, dotazovací jazyk SPARQL, RDF Schema a reasoning/inference. Podobnostní vyhledávání v multimediálních databázích, modelování a extrakce deskriptorů, metrické indexační metody.

Doporučené předměty

kódPředmětKredityZSLS
NSWI144Data na Webu 52/1 Z+Zk
NDBI034Vyhledávání multimediálního obsahu na webu 42/1 Z+Zk
NDBI049Dotazovací jazyky 1 32/0 Zk
NDBI050Dotazovací jazyky 2 32/0 Zk
NDBI021Uživatelské preference a pokročilé metody doporučování 42/1 Z+Zk

6. Implementace databázových systémů
Transakce – ACID a vlastnosti rozvrhů; uzamykací protokoly a uváznutí; distribuované transakce (2PC protokol); zotavení z chyb, žurnály. Distribuce s horizontální fragmentací, implementace NoSQL databází, CAP teorém. Indexace relačních dat. Přístupové metody k prostorovým objektům. Algoritmy implementace relačních operací, agregačních funkcí. Vyhodnocování a optimalizace dotazů. Komprese dat: Huffmanovo kódování, aritmetické kódování, LZ algoritmy, Burrows-Wheelerova transformace.

Doporučené předměty

kódPředmětKredityZSLS
NDBI016Transakce 32/0 Zk
NSWI072Algoritmy komprese dat 32/0 Zk
NDBI040Moderní databázové systémy 52/2 Z+Zk
NTIN066Datové struktury 1 62/2 Z+Zk

7. Zpracování rozsáhlých a nestrukturovaných dat
Distribuce s horizontální fragmentací, implementace NoSQL databází, CAP teorém. Big Data management - distribuce, škálování, replikace, transakce. Paralelní a distribuované zpracování rozsáhlých dat, MapReduce. Úložiště typu klíč - hodnota. Sloupcová úložiště. Dokumentová úložiště. Modely pro fulltextové dotazování - vektorový, booleovský model, uspořádání odpovědí, top-k operátor. Podobnostní vyhledávání v multimediálních databázích, modelování a extrakce deskriptorů, metrické indexační metody. Techniky vizualizace dat - redukce dimenze (PCA, MDS, t-SNE, UMAP), vizualizace grafových dat (force directed placement algoritmy, multi-scale algoritmy). Data science a metoda CRISP-DM - příprava, modelování a vyhodnocení. Základní statistické modely v data science. Modelování preferencí, varianty zpětné vazby od uživatele, doporučovací systémy.

Doporučené předměty

kódPředmětKredityZSLS
NDBI040Moderní databázové systémy 52/2 Z+Zk
NDBI034Vyhledávání multimediálního obsahu na webu 42/1 Z+Zk
NDBI042Techniky vizualizace dat 42/1 Z+Zk
NDBI048Data Science 52/2 Z+Zk
NDBI021Uživatelské preference a pokročilé metody doporučování 42/1 Z+Zk

8. Data mining
Základní principy databázových systémů, datových skladů a technologie OLAP. Dobývání znalostí z databází - příprava dat a jejich předzpracování, techniky pro popis konceptů, metody pro dobývání asociativních pravidel, metody pro klasifikaci a predikci dat, metody pro klastrovou analýzu, dobývání znalostí v databázových systémech. Statistické metody pro data mining. Hledání různých typů závislostí. Bayesovská analýza, bayesovské sítě. Pravděpodobnostní modely dokumentografického informačního systému. Metody řízeného učení pro klasifikaci a regresi. Support Vector Machines a kernelové funkce. Evaluace experimentů. Techniky vizualizace dat - redukce dimenze (PCA, MDS, t-SNE, UMAP), vizualizace grafových dat (force directed placement algoritmy, multi-scale algoritmy). Data science a metoda CRISP-DM - příprava, modelování a vyhodnocení. Základní statistické modely v data science.

Doporučené předměty

kódPředmětKredityZSLS
NDBI023Dobývání znalostí 52/2 Z+Zk
NAIL029Strojové učení 32/0 Zk
NDBI042Techniky vizualizace dat 42/1 Z+Zk
NDBI048Data Science 52/2 Z+Zk