Předmět: Pokročilé techniky programování

» Seznam fakult » FEI » KST
Název předmětu Pokročilé techniky programování
Kód předmětu KST/NNPTP
Organizační forma výuky Přednáška + Cvičení
Úroveň předmětu Magisterský
Rok studia nespecifikován
Semestr Zimní
Počet ECTS kreditů 5
Vyučovací jazyk Čeština
Statut předmětu Povinný, Volitelný
Způsob výuky Kontaktní
Studijní praxe Nejedná se o pracovní stáž
Doporučené volitelné součásti programu Není
Vyučující
  • Diviš Roman, Ing. Ph.D.
  • Bažant Michael, doc. Ing. Ph.D.
Obsah předmětu
Program přednášek a cvičení: 1. Čistý kód - zásady a doporučení pro tvorbu čistého kódu, používání komentářů, tvoření názvů identifikátorů 2. Návrhové vzory - základní návrhové vzory dle Gang of Four (creational, structural, behavioral) 3. Refaktorování zdrojového kódu - metody refaktorování, možnosti IDE 4. Testování - zásady při tvorbě jednotkových a integračních testů, použití mock/stub/fake/spy/dummy objektů 5. Test Driven Development - vývoj řízený testy, cyklus - test, kód, refaktorování 6. Git - distribuovaný verzovací systém, princip, příkazy push, pull, commit, checkout, branch, merge, rebase, spolupráce v týmu, pull/merge request 7. Git, Continuous Integration/Continuous Delivery, Git Hooks - techniky CI/CD, použití Git hooks, využití služeb GitHub/GitLab/BitBucket a Travis/Circle CI, Jenkins 8. Coding kata - praktické cvičení párového/skupinového programování 9. Dependency Injection, Inversion of Control - metody (constructor, setter, method injection), DI/IoC kontejnery 10. Garbage collector - počítání referencí, Mark&Sweep, Mark&Sweep&Compact, generační GC 11. Paralelismus, souběh, asynchronismus - použití vláken, thead pools, async/await a dalších přístupů při asynchronním programování 12. Generické programování - využívání šablon (C++) a genericity (Java - type erasure, C# - reification), vlastnosti jednotlivých technik a jejich implementací 13. Funkcionální programování - prvky funkcionálního programování v OO programovacích jazycích, LINQ (C#), Stream (Java), lambda výrazy, function closure, immutable objects, pure functions Cvičení jsou zaměřena na aplikaci teoretických poznatků z přednášek v daném týdnu výuky.

Studijní aktivity a metody výuky
Monologická (výklad, přednáška, instruktáž), Dialogická (diskuze, rozhovor, brainstorming), Nácvik dovedností
  • Příprava na zkoušku - 24 hodin za semestr
  • Vypracování seminární práce - 9 hodin za semestr
  • Kontaktní výuka - 52 hodin za semestr
  • Domácí příprava na výuku - 65 hodin za semestr
Výstupy z učení
Cílem předmětu je studenty seznámit s pokročilými technikami programování v objektově orientovaných jazycích.
Po absolvování předmětu student ovládá praktiky zahrnující psaní a udržování čistého kódu, používání návrhových vzorů a některých dalších pokročilých technik, TDD a metody pro týmovou spolupráci s využitím verzovacího systému Git.
Předpoklady
Předpokládá se znalost algoritmizace, datových struktur a znalost objektově orientovaného programování ve vyšších programovacích jazycích (C++, C#, Java).

Hodnoticí metody a kritéria
Ústní zkouška, Písemná zkouška, Posouzení zadané práce

Pro zisk zápočtu student vytvoří sadu min. 3 patchů do zadaných projektů, který musí vylepšovat kvalitu a funkcionalitu zdrojového kódu (uplatnění čistého kódu, jednotkových testů, konvencí programovacího jazyka). Patch musí projít schválením v rámci code review. Konkrétní požadavky na počet patchů, zadání projektů a repozitáře se zdrojovými kódy jsou upřesněny ve studijních materiálech. Zkouška: student musí provést code review na zadaném příkladě / příkladech, po sepsání připomínek následuje ústní-konzultační část, kdy budou jednotlivé poznámky ke kódu dále konzultovány zkoušejícím. V případě distanční formy zkoušky bude realizováno ústní zkoušení zahrnující teoretické otázky, praktické (programovací) úkoly a/nebo praktickou aplikaci code review. Pro splnění zkoušky je třeba identifikovat minimálně 60 % očekávaných nedostatků v kódu (hodnoticí stupeň E). V případě distanční formy výuky bude probíhat v prostředí MS Teams ve standardní době dle rozvrhu.
Doporučená literatura
  • Kent Beck. Test-Driven Development: By Example. 2003. ISBN 978-0321146533.
  • Robert C. Martin. Clean architecture: a craftsman's guide to software structure and design.. London: England, 2017. ISBN 9780134494326.
  • Steve McConnell. Code Complete: A Practical Handbook of Software Construction. Redmond: Washington, 2004. ISBN 978-0735619678.


Studijní plány, ve kterých se předmět nachází
Fakulta Studijní plán (Verze) Kategorie studijního oboru/specializace Doporučený ročník Doporučený semestr