Programování a softwarové systémy
2. Programování a softwarové systémy
Garantující pracoviště: Informatická sekce
Oborový garant: doc. Ing. Petr Tůma, Dr.
Studijní obor Programování a softwarové systémy nabízí následující zaměření:
- – Systémové programování
- – Počítačová grafika
- – Sítě a internetové technologie
Pro všechna 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 | |
NPRG005 | Neprocedurální programování | 6 | — | 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 | |
NSWI098 | Principy překladačů | 6 | 2/2 Z+Zk | — | |
NSWI004 | Operační systémy | 5 | 2/1 Z+Zk | — | |
NSWI143 | Architektura počítačů | 3 | — | 2/0 Zk | |
NSWI090 | Počítačové sítě | 3 | — | 2/0 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í alespoň 15 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 | — | |
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 |
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í alespoň 5 kreditů za předměty z této skupiny.
kód | Předmět | Kredity | ZS | LS | |
NMAI056 | Matematická analýza III | 6 | 2/2 Z+Zk | — | |
NDMI012 | Kombinatorika a grafy II | 6 | 2/2 Z+Zk | — | |
NMAI062 | Algebra I | 6 | 2/2 Z+Zk | — | |
NDMI009 | Kombinatorická a výpočetní geometrie 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 | — | |
NOPT046 | Diskrétní a spojitá optimalizace | 6 | — | 2/2 Z+Zk | |
NMAI042 | Numerická matematika | 6 | — | 2/2 Z+Zk | |
NAIL063 | Teorie množin | 3 | — | 2/0 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í alespoň 18 kreditů za předměty z této skupiny.
kód | Předmět | Kredity | ZS | LS | |
NPGR003 | Základy počítačové grafiky | 5 | 2/2 Z+Zk | — | |
NPGR004 | Počítačová grafika II | 5 | — | 2/1 Z+Zk | |
NPGR019 | Realtime grafika na GPU | 5 | — | 2/1 Z+Zk | |
NPGR025 | Introduction to Colour Science | 3 | — | 2/0 Zk | |
NPGR020 | Geometrie pro počítačovou grafiku | 3 | — | 2/0 Zk | |
NPGR002 | Digitální zpracování obrazu | 5 | 3/0 Zk | — | |
NPRG036 | Technologie XML | 6 | — | 2/2 Z+Zk | |
NSWI089 | Ochrana informací I | 3 | 2/0 Zk | — | |
NSWI015 | Unix/Linux Programming in C | 5 | 2/1 Z+Zk | — | |
NSWI106 | Administrace Unixu | 6 | 2/2 Z+Zk | — | |
NSWI045 | Rodina protokolů TCP/IP | 3 | — | 2/0 Zk | |
NSWI021 | Počítačové sítě II | 3 | — | 2/0 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 | |
NPRG044 | Programování uživatelských rozhraní v Javě | 2 | — | 0/2 Z | |
NPRG003 | Metodika programování a filozofie programovacích jazyků | 3 | — | 2/0 Zk | |
NPFL012 | Úvod do počítačové lingvistiky | 3 | 2/0 Zk | — | |
NSWI041 | Úvod do softwarového inženýrství | 5 | — | 2/2 Z+Zk | |
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 | — |
* 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 | — | |
NSWI154 | Nástroje pro vývoj software | 2 | 0/2 Z | — | |
Povinně volitelný předmět ze skupiny 1 | 6 | 2/2 Z+Zk | — | ||
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 | — |
NPRG005 | Neprocedurální programování | 6 | — | 2/2 Z+Zk | |
NTIN071 | Automaty a gramatiky | 6 | — | 2/2 Z+Zk | |
NDBI025 | Databázové systémy | 6 | — | 2/2 Z+Zk | |
NSWI143 | Architektura počítačů | 3 | — | 2/0 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 | |
NSWI090 | Počítačové sítě | 3 | — | 2/0 Zk | |
NSWI098 | Principy překladačů | 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í
Systémové programování
kód | Předmět | Kredity | ZS | LS | |
NPRG024 | Návrhové vzory | 3 | — | 0/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 | — |
Počítačová grafika
kód | Předmět | Kredity | ZS | LS | |
NPGR003 | Základy počítačové grafiky | 5 | 2/2 Z+Zk | — | |
NPGR004 | Počítačová grafika II | 5 | — | 2/1 Z+Zk |
Sítě a internetové technologie
kód | Předmět | Kredity | ZS | LS | |
NSWI045 | Rodina protokolů TCP/IP | 3 | — | 2/0 Zk | |
NSWI021 | Počítačové sítě II | 3 | — | 2/0 Zk |
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í Systémové programování
Spouštění procesů, dynamicky linkované knihovny, volací konvence. Paralelismus a synchronizace na multiprocesorech. Rozhraní pro synchronizaci. Správa paměti na multiprocesorech, alokátory, garbage collection. Rozhraní pro práci se soubory, paměťově mapované soubory. Interní struktura základních systémů souborů. Návrhové vzory. Správa verzí. Testování funkčnosti a výkonnosti. Koncept middleware, volání vzdálených procedur, zasílání zpráv (konkrétní technologie podle aktuálního vývoje). Metody specifikace a verifikace vlastností imperativních programů.
8. Pro zaměření Počítačová grafika
Rastrový obraz, barvy, jejich vnímání, reprezentace a reprodukce, 2D a 3D vykreslování, základy OpenGL, základy realistického zobrazování a výpočtu osvětlení, obrazová funkce, konvoluce, Fourierova transformace, radiometrické korekce, geometrické korekce, potlačování šumu v obrazu, základy rozpoznávání vzorů.
8. Pro zaměření Sítě a internetové technologie
Rodina protokolů TCP/IP (ARP, IPv4, IPv6, ICMP, UDP, TCP) – adresace, přidělování adres, převod mezi IP adresami a adresami linkové vrstvy, routing, fragmentace, spolehlivost, flow control, congestion control, NAT. Rozhraní BSD sockets. Spolehlivost - spojované a nespojované protokoly, typy, detekce a oprava chyb. Bezpečnost - IPSec, SSL, firewalls. Internetové a intranetové protokoly a technologie - DNS, SMTP, IMAP, POP3, FTP, HTTP, NFS. IP telefonie. Desetimegabitové, stomegabitové, gigabitové verze ethernetu, řízení toku. Bezdrátový ethernet (protokolová architektura 802.11, přístupové metody, roaming). xDSL. Mobilní sítě (GSM, 3G). Bluetooth.