Sylabus predmetu PRT124D - Programovací techniky (VŠPP - ZS 2019/2020)

     Čeština          Angličtina          

Kód předmětu: PRT124D
Název česky: Programovací techniky
Název anglicky: Programming Techniques
Způsob ukončení a počet kreditů: zkouška (4 kredity)
Forma výuky: prezenční, 2/2 (počet hodin přednášek týdně / počet hodin cvičení týdně)
kombinovaná, 8/0 (počet hodin přednášek za období / počet hodin cvičení za období)
Jazyk výuky: čeština
Garant předmětu: Mgr. Martin Trčka
Vyučující: doc. RNDr. Mikuláš Gangur, Ph.D. (přednášející, zkoušející)
Mgr. Martin Trčka (cvičící, garant, přednášející, zkoušející)
Prerekvizity: žádné
Anotace:
Cílem předmětu je seznámit studenty s principy programování a s dalšími programátorskými paradigmaty, které se při vývoji aplikací využívají. Předmět si klade za cíl nikoliv naučit precizně programovat, ale vytvořit základ pro pochopení programátorské práce, což je potřebné zejména pro IT manažery, kteří s programátory budou pracovat v jednom týmu. V rámci kurzu budou přehledně vysvětleny jednotlivé pojmy vyskytující se v programátorské mluvě a zároveň si studenti budou mít možnost vyzkoušet jednotlivé techniky v rámci cvičení. Kurz si klade za cíl prezentovat i méně obvyklé techniky programování, jako jsou například logické a funkcionální programování.
 
Obsah předmětu:
1.Softwarové projekty: typy softwarových projektů, jaké činnosti jsou součástí projektu, možné problémy a jak jim předcházet, knihovny, analýza, funkce manažera, testování, dokumentace, nasazení, podpora, SLA, algoritmus, zdrojový a strojový kód, překlad a interpretace, mezikód, just-in-time kompilace (dotace 0/0)
2.Syntax a sémantika, syntaktická analýza, zásady psaní zdrojového kódu, validace vstupu, IDE a jeho přínosy, syntax highlighting, správa verzí, platforma (rozdíly mezi hardware, OS, frameworky) (dotace 0/0)
3.Chyby v programech: co je to chyba, příčiny chyb, typy chyb (přetečení, logické chyby, buffer overflow, memory leak, dead-lock, race condition), formální analýza chyb (halting problém), jak chyby odhalovat, co s chybami dělat, evidence a hlášení chyb, bug-tracking system (dotace 0/0)
4.Programovací paradigmata: historie programovacích jazyků, paradigma, strojový kód (von Neumann), jazyk symbolických adres (assembler), nestrukturované programování, procedurální programování, objektově orientované programování (OOP), deklarativní paradigma (dotace 0/0)
5.Procedurální programování: algoritmus (vlastnosti, zápis), proměnná, konstanta, datový typ, identifikátory, viditelnost a inicializace proměnné, metoda (charakteristika, parametry předávání hodnotou a odkazem, návratová hodnota), princip rozděl a panuj , rekurze, návrh metody (dotace 0/0)
6.OOP: vymezení a výhody OOP (komponenty), objekt, třída, instance, atribut, metoda, předávání zpráv, statický atribut/metoda/třída, konstruktor, destruktor (dotace 0/0)
7.OOP: dědičnost, abstraktní metody/třídy, zapouzdření, časná a pozdní vazba (virtuální metody) (dotace 0/0)
8.OOP: analýza a návrh tříd: abstrakce, dědičnost, kompozice (agregace), asociace, návrh hierarchie tříd (dle funkce, dle struktury), silné propojení, pravidlo nezávislosti (Law of Demeter), soudržnost (relevance, potřebnost, úplnost) (dotace 0/0)
9.Pokročilé možnosti imperativních jazyků: polymorfismus přetěžování metod (signatura metody), šablony (parametrický polymorfismus), operátory, přetěžování operátorů, rozhraní (interface), jmenné prostory, syntaktický cukr, výjimky (dotace 0/0)
10.Funkcionální programování: motivace, silné a slabé stránky funkcionálních jazyků, deklarativnost, ortogonalita, referenční transparentnost, jazyk Haskell: funkce jako datový typ, líné vyhodnocování, funkce vyššího řádu (dotace 0/0)
11.Logické programování: principy, použití, jazyk Prolog: objekty, vztahy, pravidla, dotazy, proměnné, prohledávání do hloubky, strom důkazu klauzule (dotace 0/0)
12.Nástroje CASE: k čemu slouží, rozdělení podle fáze (Pre, Upper, Middle, Lower, Post), funkce CASE nástrojů (centrální úložiště, podpora práce v týmu, generování, modelování), forward a reverse engineering (a synchronizace), příklady CASE nástrojů (dotace 0/0)
13.Opakování náročných témat (dotace 0/0)
 
Výstupy z učení:
Oborové znalosti:
Student umí:

. vysvětlit probírané pojmy (jejich význam a případné vzájemné vztahy)

. popsat proces vývoje software, uvést typické problémy při vývoji a způsoby, jak jim předcházet

. vysvětlit rozdíl mezi syntaxí a sémantikou programovacího jazyka

. vyjmenovat typické chyby, které se v programech nacházejí, a popsat metody, jak chyby odhalovat

. charakterizovat jednotlivá programovací paradigmata

. vysvětlit základní principy objektově orientovaného programování

. vysvětlit principy funkcionálního a logického programování

. uvést výhody použití CASE nástrojů

Oborové dovednosti:

Student umí:

. rozdělit program do vhodných metod a vzájemně je provázat

. navrhnout vhodnou hierarchii tříd (dle funkce nebo dle datových struktur)

. posoudit míru propojení tříd a soudržnost třídy a navrhnout, jak situaci zlepšit

Obecné způsobilosti:

(žádné)
 
Vstupní znalosti:
Student mus n z adn lgoritmy a z ady programov .
 
Způsob a metody výuky:
Účast na tutoriálech je nepovinná, ale je doporučena. Na tutoriálech budou z časových důvodů probrána jen ta nejdůležitější témata (a ne příliš do hloubky), zbytek je třeba si nastudovat z dodaných elektronických materiálů a z tištěné základní literatury. Pochopení látky je možné si otestovat na dávkách. Případné nejasnosti je možné probrat v rámci konzultačních hodin.
 
Rámcové podmínky zápočtu:
-- obsah této položky nebyl definován --
 
Rámcové podmínky zkoušky:
Forma zkoušky je ústní. Student si vytáhne otázku (téma), dostane čas na přípravu a pak bude o daném tématu povídat (vysvětlovat). Úkolem studenta je prokázat, že danému tématu rozumí.
 
Studijní zátěž:
DruhPrezenční studiumKombinované studium
Účast na přednáškách/tutoriálech26 h8 h
Účast na cvičeních26 h0 h
Příprava na přednášky/tutoriály0 h34 h
Zpracování dávek0 h8 h
Příprava na zkoušku52 h54 h
Celkem104 h104 h
 
Literatura:
Základní:
PALETA, P. Co programátory ve škole neučí aneb Softwarové inženýrství v reálné praxi. Brno: Computer Press, 2003. ISBN 80-251-0073-1.
KEOGH, J. -- GIANNINI, M. OOP - Objektově orientované programování bez předchozích znalostí: Průvodce pro samouky. Computer Press, 2006. ISBN 80-251-0973-9.

Doporučená:
HEROUT, P. Učebnice jazyka JAVA. České Budějovice: Kopp, 2010. 386 s. ISBN 978-80-7232-398-2.
CHEUNG, K W. Vývojářův kód: poučte se z chyb jiných: pro všechny (pracující s) programátory. 1. vyd. Brno: Computer Press, 2013. 200 s. ISBN 978-80-251-3786-4.


Poslední změnu provedla Mgr. Nikola Najzarová dne 16. 8. 2019.

Typ výstupu: