Softwarové a datové inženýrství
3. Softwarové a datové inženýrství
Garantující pracoviště: Informatická sekce
Oborový garant: doc. RNDr. Tomáš Skopal, Ph.D.
Studijní obor Softwarové a datové inženýrství nabízí následující zaměření:
- – Softwarové inženýrství
- – Databáze a web
Pro obě zaměření platí stejné podmínky studia, stejné povinné a povinně volitelné předměty i stejné požadavky k bakalářské státní závěrečné zkoušce s výjimkou posledního zkušebního okruhu v požadavcích ke státní závěrečné zkoušce z informatiky.
Povinné předměty
kód | Předmět | Kredity | ZS | LS | |
NMAI054 | Matematická analýza I | 5 | 2/2 Z+Zk | — | |
NMAI055 | Matematická analýza II | 5 | — | 2/2 Z+Zk | |
NMAI057 | Lineární algebra I | 5 | 2/2 Z+Zk | — | |
NMAI058 | Lineární algebra II | 5 | — | 2/2 Z+Zk | |
NDMI002 | Diskrétní matematika | 5 | 2/2 Z+Zk | — | |
NDMI011 | Kombinatorika a grafy I | 5 | — | 2/2 Z+Zk | |
NMAI059 | Pravděpodobnost a statistika | 6 | 2/2 Z+Zk | — | |
NAIL062 | Výroková a predikátová logika | 6 | 2/2 Z+Zk | — | |
NTIN071 | Automaty a gramatiky | 6 | — | 2/2 Z+Zk | |
NTIN060 | Algoritmy a datové struktury I | 5 | — | 2/2 Z+Zk | |
NTIN061 | Algoritmy a datové struktury II | 6 | 2/2 Z+Zk | — | |
NPRG030 | Programování I | 6 | 3/2 Z | — | |
NPRG031 | Programování II | 5 | — | 2/2 Z+Zk | |
NSWI120 | Principy počítačů | 3 | 3/0 Zk | — | |
NSWI141 | Úvod do počítačových sítí | 2 | 1/0 Zk | — | |
NSWI095 | Úvod do UNIXu | 5 | — | 2/2 Z+Zk | |
NDBI025 | Databázové systémy | 6 | — | 2/2 Z+Zk | |
NPRG036 | Technologie XML | 6 | — | 2/2 Z+Zk | |
NSWI142 | Webové aplikace | 6 | 2/2 Z+Zk | — | |
NSWI004 | Operační systémy | 5 | 2/1 Z+Zk | — | |
NSWI098 | Principy překladačů | 6 | 2/2 Z+Zk | — | |
NPRG045 | Ročníkový projekt | 1 | 4 | — | 0/1 Z |
NSZZ031 | Vypracování a konzultace bakalářské práce | 6 | — | 0/4 Z | |
NJAZ091 | Anglický jazyk | 2 | 1 | — | 0/0 Zk |
NTVY014 | Tělesná výchova I | 3 | 1 | 0/2 Z | — |
NTVY015 | Tělesná výchova II | 3 | 1 | — | 0/2 Z |
NTVY016 | Tělesná výchova III | 3 | 1 | 0/2 Z | — |
NTVY017 | Tělesná výchova IV | 3 | 1 | — | 0/2 Z |
1 Předmět NPRG045 lze zapsat v zimním i v letním semestru, standardně je zapisován v letní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.
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í 10 kreditů za předměty z této skupiny.
kód | Předmět | Kredity | ZS | LS | |
NPRG041 | Programování v C++ | 6 | 2/2 Z+Zk | — | |
NPRG013 | Java | 6 | 2/2 Z+Zk | — | |
NPRG035 | Jazyk C# a platforma .NET | 6 | 2/2 Z+Zk | — | |
NDBI007 | Organizace a zpracování dat I | 4 | 2/1 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í 5 kreditů za předměty z této skupiny.
kód | Předmět | Kredity | ZS | LS | |
NMAI062 | Algebra I | 6 | 2/2 Z+Zk | — | |
NOPT048 | Lineární programování a kombinatorická optimalizace | 1 | 6 | — | 2/2 Z+Zk |
NDMI084 | Úvod do aproximačních a pravděpodobnostních algoritmů | 5 | 2/1 Z+Zk | — |
1 Předmět NOPT048 se do akademického roku 2017/18 nazýval Optimalizační metody, jedná se o stejný předmět.
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í 23 kreditů za předměty z této skupiny.
kód | Předmět | Kredity | ZS | LS | |
NPRG051 | Pokročilé programování v C++ | 6 | — | 2/2 Z+Zk | |
NPRG021 | Pokročilé programování na platformě Java | 6 | — | 2/2 Z+Zk | |
NPRG038 | Pokročilé programování pro .NET I | 6 | — | 2/2 Z+Zk | |
NPRG005 | Neprocedurální programování | 6 | — | 2/2 Z+Zk | |
NSWI090 | Počítačové sítě | 3 | — | 2/0 Zk | |
NPGR002 | Digitální zpracování obrazu | 5 | 3/0 Zk | — | |
NPFL012 | Úvod do počítačové lingvistiky | 3 | 2/0 Zk | — | |
NDBI013 | Administrace Oracle | 2 | — | 0/2 Z | |
NSWI126 | Pokročilé nástroje pro vývoj a monitorování software | 3 | — | 0/2 Z | |
NDBI039 | Administrace Microsoft SQL serveru | 2 | — | 0/2 Z | |
NDBI038 | Vyhledávání na webu | 4 | — | 2/1 Z+Zk | |
NSWI089 | Ochrana informací I | 3 | 2/0 Zk | — | |
NSWI036 | Programování pro Windows I | 3 | 2/0 Zk | — | |
NSWI037 | Programování pro Windows II | 3 | — | 2/0 Zk | |
NSWI106 | Administrace Unixu | 6 | 2/2 Z+Zk | — | |
NSWI045 | Rodina protokolů TCP/IP | 3 | — | 2/0 Zk | |
NSWI041 | Úvod do softwarového inženýrství | 5 | — | 2/2 Z+Zk | |
NPRG024 | Návrhové vzory | 3 | — | 0/2 KZ | |
NDBI026 | Databázové aplikace | 4 | 1/2 KZ | — | |
NSWI154 | Nástroje pro vývoj software | 2 | 0/2 Z | — | |
NSWI162 | Sémantika programů | 1 | 0/1 Z | — | |
NSWI163 | Úvod do middleware | 1 | 0/1 Z | — | |
NDBI037 | Informační modely s uspořádáním | 4 | 2/1 Z+Zk | — |
* Předmět je vyučován v zimním i v letním semestru.
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
kód | Předmět | Kredity | ZS | LS | |
NMAI054 | Matematická analýza I | 5 | 2/2 Z+Zk | — | |
NMAI057 | Lineární algebra I | 5 | 2/2 Z+Zk | — | |
NDMI002 | Diskrétní matematika | 5 | 2/2 Z+Zk | — | |
NPRG030 | Programování I | 6 | 3/2 Z | — | |
NSWI120 | Principy počítačů | 3 | 3/0 Zk | — | |
NSWI141 | Úvod do počítačových sítí | 2 | 1/0 Zk | — | |
NMAI069 | Matematické dovednosti | 1 | 2 | 0/2 Z | — |
NSWI165 | Počítačové dovednosti | 2 | 1 | 0/1 Z | — |
NJAZ070 | Anglický jazyk pro středně pokročilé a pokročilé I | 3 | 1 | 0/2 Z | — |
NTVY014 | Tělesná výchova I | 5 | 1 | 0/2 Z | — |
NMAI055 | Matematická analýza II | 5 | — | 2/2 Z+Zk | |
NMAI058 | Lineární algebra II | 5 | — | 2/2 Z+Zk | |
NDMI011 | Kombinatorika a grafy I | 5 | — | 2/2 Z+Zk | |
NPRG031 | Programování II | 5 | — | 2/2 Z+Zk | |
NTIN060 | Algoritmy a datové struktury I | 5 | — | 2/2 Z+Zk | |
NSWI095 | Úvod do UNIXu | 5 | — | 2/2 Z+Zk | |
NJAZ072 | Anglický jazyk pro středně pokročilé a pokročilé II | 3 | 1 | — | 0/2 Z |
NTVY015 | Tělesná výchova II | 5 | 1 | — | 0/2 Z |
2. rok studia
kód | Předmět | Kredity | ZS | LS | |
NTIN061 | Algoritmy a datové struktury II | 6 | 2/2 Z+Zk | — | |
NAIL062 | Výroková a predikátová logika | 6 | 2/2 Z+Zk | — | |
NMAI059 | Pravděpodobnost a statistika | 6 | 2/2 Z+Zk | — | |
Povinně volitelné předměty ze skupiny 1 | — | ||||
NJAZ074 | Anglický jazyk pro středně pokročilé a pokročilé III | 3 | 1 | 0/2 Z | — |
NTVY016 | Tělesná výchova III | 5 | 1 | 0/2 Z | — |
NTIN071 | Automaty a gramatiky | 6 | — | 2/2 Z+Zk | |
NDBI025 | Databázové systémy | 6 | — | 2/2 Z+Zk | |
NPRG036 | Technologie XML | 6 | — | 2/2 Z+Zk | |
NPRG045 | Ročníkový projekt | 4 | — | 0/1 Z | |
NJAZ090 | Anglický jazyk pro středně pokročilé a pokročilé IV | 3 | 1 | — | 0/2 Z |
NJAZ091 | Anglický jazyk | 4 | 1 | — | 0/0 Zk |
NTVY017 | Tělesná výchova IV | 5 | 1 | — | 0/2 Z |
Povinně volitelné předměty ze skupin 2 a 3 | |||||
Volitelné předměty |
3. rok studia
kód | Předmět | Kredity | ZS | LS | |
NSWI098 | Principy překladačů | 6 | 2/2 Z+Zk | — | |
NSWI142 | Webové aplikace | 6 | 2/2 Z+Zk | — | |
NSWI004 | Operační systémy | 5 | 2/1 Z+Zk | — | |
NSZZ031 | Vypracování a konzultace bakalářské práce | 6 | — | 0/4 Z | |
Povinně volitelné předměty ze skupin 2 a 3 | |||||
Volitelné předměty |
1 Předmět NMAI069 Matematické dovednosti je určen a vřele doporučen studentům, kteří si chtějí osvojit a procvičit základní matematické dovednosti používané v matematických předmětech na MFF. Důraz je kladen na korektní matematické vyjadřování a základní důkazové techniky.
2 Předmět NSWI165 Počítačové dovednosti je určen a vřele doporučen studentům, kteří si chtějí osvojit a procvičit základní informatické úlohy související s principy fungování počítačů používané v informatických předmětech na MFF. Důraz je kladen na jasné chápání funkce počítačů v podstatných souvislostech.
3 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.
4 Zkoušku z anglického jazyka NJAZ091 je možné absolvovat v zimním nebo v letním semestru.
5 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.
Doporučené předměty pro jednotlivá zaměření
Softwarové inženýrství
kód | Předmět | Kredity | ZS | LS | |
NPRG051 | Pokročilé programování v C++ | 6 | — | 2/2 Z+Zk | |
NSWI126 | Pokročilé nástroje pro vývoj a monitorování software | 3 | — | 0/2 Z | |
NPRG024 | Návrhové vzory | 3 | — | 0/2 KZ |
Databáze a web
kód | Předmět | Kredity | ZS | LS | |
NDBI038 | Vyhledávání na webu | 4 | — | 2/1 Z+Zk | |
NDBI007 | Organizace a zpracování dat I | 4 | 2/1 Z+Zk | — | |
NDBI026 | Databázové aplikace | 4 | 1/2 KZ | — |
Požadavky znalostí ke státní závěrečné zkoušce
Matematika
Okruhy 1.-16. se shodují s okruhy 1.-16. oboru Obecná informatika.
1. Čísla
Vlastnosti přirozených, celých, racionálních, reálných a komplexních čísel. Posloupnosti a řady čísel. Cauchyovské posloupnosti.
2. Základy diferenciálního počtu
Reálné funkce jedné reálné proměnné. Spojitost, limita funkce v bodě (vlastní i nevlastní). Některé konkrétní funkce (polynomy, racionální lomené funkce, goniometrické a cyklometrické funkce, logaritmy a exponenciální funkce). Derivace: definice a základní pravidla, věty o střední hodnotě, derivace vyšších řádů. Některé aplikace (průběhy funkcí, Taylorův polynom se zbytkem).
3. Integrál
Primitivní funkce, metody výpočtu. Určitý (Riemannův) integrál, užití určitého integrálu. Vícerozměrný integrál a Fubiniho věta.
4. Základy teorie funkcí více proměnných
Parciální derivace a totální diferenciál, věty o střední hodnotě, extrémy funkcí více proměnných, věta o implicitních funkcích.
5. Metrické prostory
Definice metrického prostoru, příklady. Spojitost, otevřené a uzavřené množiny. Kompaktnost.
6. Základní algebraické struktury
Grupa, okruh, těleso - definice a příklady. Malá Fermatova věta. Dělitelnost a ireducibilní rozklady polynomů. Rozklady polynomů na kořenové činitele pro polynom s reálnými, racionálními, komplexními koeficienty. Násobnost kořenů a jejich souvislost s derivacemi mnohočlenu.
7. Vektorové prostory
Grupa, těleso. Základní vlastnosti vektorových prostorů, podprostory, generování, lineární závislost a nezávislost. Věta o výměně. Konečně generované vektorové prostory, báze. Lineární zobrazení.
8. Skalární součin
Vlastnosti v reálném i komplexním případě. Norma. Cauchy-Schwarzova nerovnost. Kolmost. Ortogonální doplněk a jeho vlastnosti.
9. Řešení soustav lineárních rovnic
Lineární množiny ve vektorovém prostoru, jejich geometrická interpretace. Řešení soustavy rovnic je lineární množina. Frobeniova věta. Řešení soustavy úpravou matice. Souvislost soustavy řešení s ortogonálním doplňkem.
10. Matice
Matice a jejich hodnost. Operace s maticemi a jejich vlastnosti. Inverzní matice. Regulární matice, různé charakteristiky. Matice a lineární zobrazení, resp. změny souřadných soustav.
11. Determinanty
Definice a základní vlastnosti determinantu. Úpravy determinantů, výpočet. Geometrický smysl determinantu. Minory a inversní matice. Cramerovo pravidlo.
12. Vlastní čísla a vlastní hodnoty
Vlastní čísla a vlastní hodnoty lineárního operátoru, resp. čtvercové matice. Jejich výpočet, základní vlastnosti. Uvedení matice na diagonální tvar v případě různých vlastních čísel. Informace o Jordanově tvaru v obecném případě.
13. Diskrétní matematika
Uspořádané množiny. Množinové systémy, párování, párování v bipartitních grafech (systémy různých reprezentantů). Kombinatorické počítání. Princip inkluze a exkluze.
14. Teorie grafů
Základní pojmy teorie grafů, reprezentace grafu. Stromy a jejich základní vlastnosti, kostra grafu. Eulerovské grafy. Rovinné grafy, barvení grafů. Mengerova věta, dualita toků a řezů.
15. Pravděpodobnost a statistika
Náhodné jevy, podmíněná pravděpodobnost, nezávislost náhodných jevů. Náhodné veličiny, střední hodnota, rozdělení náhodných veličin, normální a binomické rozdělení. Lineární kombinace náhodných veličin. Bodové odhady, intervaly spolehlivosti, testování hypotéz, t-test, chí-kvadrát test, lineární regrese.
16. Logika
Jazyk, formule, sémantika, tautologie. Rozhodnutelnost, splnitelnost, pravdivost, dokazatelnost. Věty o kompaktnosti a úplnosti výrokové a predikátové logiky. Normální tvary výrokových formulí, prenexní tvary formulí predikátové logiky.
Informatika
Okruhy 1.-5. se shodují s okruhy 1.-5. oboru Obecná informatika.
1. Automaty a jazyky
Chomského hierarchie, třídy automatů a gramatik, determinismus a nedeterminismus. Uzávěrové vlastnosti tříd jazyků.
2. Algoritmy a datové struktury
Časová složitost algoritmů, složitost v nejhorším a průměrném případě. Třídy složitosti P a NP, převoditelnost, NP-úplnost. Metoda ,,rozděl a panuj'' - aplikace a analýza složitosti, dynamické programování. Binární vyhledávací stromy, vyvažování, haldy. Hašování. Sekvenční třídění, porovnávací algoritmy, přihrádkové třídění, třídící sítě. Grafové algoritmy - prohledávání do hloubky a do šířky, souvislost, silná souvislost v orientovaných grafech, topologické třídění, nejkratší cesta, kostra grafu, toky v sítích. Tranzitivní uzávěr. Algoritmy vyhledávání v textu. Algebraické algoritmy - DFT, Euklidův algoritmus. RSA. Aproximační algoritmy.
3. 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í, vlastnosti transakcí, uzamykací protokoly, zablokování. ER-diagramy, metody návrhů IS. Přehled SQL.
4. Programovací jazyky
Principy implementace objektově orientovaných jazyků, běhová podpora. Oddělený překlad, sestavení, řízení překladu. Pojmy a principy objektového návrhu. Generické programování a knihovny, šablony a generika, kompilační polymorfismus. Neprocedurální programování.
5. Architektura počítačů a operačních systémů
Architektury počítače. Procesory, multiprocesory. Sběrnice, protokoly. Vstupní a výstupní zařízení. Architektury OS. Vztah OS a HW, obsluha přerušení. Procesy, vlákna, plánování. Synchronizační primitiva, vzájemné vyloučení. Zablokování a zotavení z něj. Organizace paměti, alokační algoritmy. Principy virtuální paměti, stránkování, algoritmy pro výměnu stránek, výpadek stránky, stránkovací tabulky. Systémy souborů, adresářové struktury.
6. Základy sítí
Taxonomie počítačových sítí. Architektura ISO/OSI. Přehled síťového modelu TCP/IP. Směrování. Koncept adresy, portu, socketu. Architektura klient/server. Základy fungování protokolů HTTP, FTP a SMTP. Principy datových přenosů - kódování, modulace, přenosová rychlost a pásmo, Nyquistův a Shannonův teorém, analogový/digitální přenos, přenosová média. Techniky přenosu dat - synchronní/asynchronní přenosy, CRC, potvrzování, řízení toku. Přístupové metody, řešení kolizí. Směrování. Koncept adresy, portu, socketu. QoS.
7. Překladače
Struktura překladače, lexikální, syntaktická analýza, generování mezikódu, optimalizace. Interpretované jazyky, virtuální stroje.
8. Pro zaměření Softwarové inženýrství
Vícehodnotové logické programování. Faginův datový model a algoritmus. Míry úspěšnosti algoritmů. Rámec pro převeditelnost informačních modelů. Informační modely a uspořádání. Tvorba webových stránek pomocí HTML, XHTML a CSS. Programování na straně serveru: PHP, Java, .NET. Programování na straně klienta: JavaScript, AJAX. Technologie webových služeb: REST, SOAP, WSDL. Linked Data: principy, RDF, RDF Schema. Principy formátu XML, definice struktury XML dat pomocí DTD a XML Schema. Rozhraní DOM a SAX, XML Infoset. Dotazovací jazyky XPath, XQuery, XML Query Update. Transformace XML dat pomocí XSL. Databáze s XML rozšířením a jejich principy, SQL/XML. Nativní XML databáze a jejich principy. Přehled standardních XML formátů (DocBook, OpenOffice, SVG, XHTML, RDF, MathML, RSS, ...)
Návrhové vzory. Významná rozšíření a příbuzné jazyky C++: C, C++/CLI, .Net, POSIX, GNU. Kompilační polymorfismus: Parciální a explicitní specializace, policy classes, traits. Koncepty. Standardní knihovny: Kontejnery, iterátory, algoritmy. Lambda výrazy. Paralelní prostředí. Bezpečné a přenositelné programování, předcházení chybám. Ladění chyb a výkonu, pokročilé vývojové nástroje. Interakce programu s okolím, rozhraní OS. Typická paradigmata důležitých rozhraní: databáze, XML, síťová komunikace, GUI, grafika.
8. Pro zaměření Databáze a web
Vícehodnotové logické programování. Faginův datový model a algoritmus. Míry úspěšnosti algoritmů. Rámec pro převeditelnost informačních modelů. Informační modely a uspořádání. Tvorba webových stránek pomocí HTML, XHTML a CSS. Programování na straně serveru: PHP, Java, .NET. Programování na straně klienta: JavaScript, AJAX. Technologie webových služeb: REST, SOAP, WSDL. Linked Data: principy, RDF, RDF Schema. Principy formátu XML, definice struktury XML dat pomocí DTD a XML Schema. Rozhraní DOM a SAX, XML Infoset. Dotazovací jazyky XPath, XQuery, XML Query Update. Transformace XML dat pomocí XSL. Databáze s XML rozšířením a jejich principy, SQL/XML. Nativní XML databáze a jejich principy. Přehled standardních XML formátů (DocBook, OpenOffice, SVG, XHTML, RDF, MathML, RSS, ...)
Optimalizace dotazů (indexy, hinty, plány provedení, metody přístupu k datům, spojování tabulek). Implementace integritních omezení. Využití XML rozšíření relačních databází. Fultextové vyhledávání v SQL databázích. Schémata organizace souborů. Základní typy indexů a jejich použití. B-stromy a jejich varianty. Hašování a sekundární paměť. Hledání dat podle více atributů. Mapování datových struktur do sekundární paměti. Vyhledávání textu - Booleovské a vektorové modely. Vyhledávání hypertextu, ranking, optimalizace webových stránek pro vyhledávače. Podobnostní vyhledávání v multimediálních databázích. Metrické indexování podobnosti. Kolaborativní filtrování.