====== Přednášky ======
**V akademickém roce 2016/2017 je předmět dobíhajících studijních programů rozvrhován s předmětem [[https://cw.fel.cvut.cz/wiki/courses/b0b36pjv/start|Programování v JAVA (PJV)]]]. Část věnována programovacímu jazyku C je pokryta v učebnici K.N. King: C Programming A Modern Approach, Second Edition. W. W. Norton & Company, Inc., 2008, případně též Pavel Herout, Učebnice Jazyka C - 1. díl, Kopp, 2016. Dále je možné navštěvovat přednášky předmětu [[https://cw.fel.cvut.cz/wiki/courses/b3b36prg/|Programování v C (PRG)]], na kterých je v prvních týdnech semestru rozvrhován [[ https://cw.fel.cvut.cz/wiki/courses/b3b36prg/lectures/|úvod do základních konstruktů jazyka]].**
Podklady přednášek pro akademický rok 2015/2016. Podklady se skládají z promítaných slidů, které jsou také k dispozici ve zkrácených verzích šetřnějších k případnému tisku, bez přechodů mezi snímky a ve formátu čtyři snímky na stránku.
**Poklady tvoří podpůrný materiál a jejich učelem není nahradit vlastní zápisky z přednášky, které slouží také jako prostředek osvojení si studované problematiky.**
===== 1. Objektově orientované programování a polymorfismus =====
Organizace předmětu; objektově orientované programování a polymorfismus v Javě; Příklad polymorfismu a návrhový vzor **Double Dispatch**
* prezentace: {{courses:a0b36pr2:lectures:lecture01-slides.pdf|}}
* zkrácená verze: {{courses:a0b36pr2:lectures:lecture01-handout.pdf|}}
* zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture01-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture01-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture01-demos.zip|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2016/03/08 11:59// **Aktualizace**: neměnitelné objekty (48-50) a dynamická vazba při volání nadřazeného konstruktoru (60-61).
===== 2. Výjimky, výčtové typy a kolekce v Javě =====
Ošetření výjiměčných situací, kontrolované a nekontrolované výjimky, try-catch-finally, try-with-resources; výčtový typ; datové kolekce v Javě, Java Collection Framework (JFC), návrhový vzor Iterátor.
* prezentace: {{courses:a0b36pr2:lectures:lecture02-slides.pdf|}}
* zkrácená verze: {{courses:a0b36pr2:lectures:lecture02-handout.pdf|}}
* zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture02-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture02-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture02-demos.zip|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2016/03/08 14:41// **Aktualizace**: Přesun generického typu na 3. přednášku.
===== 3. GUI v Javě =====
Grafické uživatelské rozhraní v Javě; AWT; Swing; Komponenty, kontejnery a správce rozvržení; kreslení grafických primitiv; dialogová okna; modální dialogy.
* prezentace: {{courses:a0b36pr2:lectures:lecture03-slides.pdf|}}
* zkrácená verze: {{courses:a0b36pr2:lectures:lecture03-handout.pdf|}}
* zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture03-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture03-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture03-demos.zip|}}
Příklady GUI v Javě z předchozích běhů předmětu {{courses:a0b36pr2:lectures:pr2-03-gui.zip|}} (pro inspiraci, neaktualizováno, kódovací konvence dle tehdejších zvyklostí).
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2016/03/10 09:11// **Aktualizace**: Přesun generického typu ze 2. přednášky, opakování iterátoru.
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2016/04/01 10:39// **Aktualizace**: Upřesnění HTML rendering engine v Java FX .
===== 4. GUI v Javě a událostmi řízené programování =====
Grafické uživatelské rozhraní v Javě; Swing; návrhář GUI; Příklad aplikace, Model-View-Controller (MVC); Události a událostmi řízené programování (Event-Driven-Programming); vnitřní a vnitřní anonymní třídy.
* prezentace: {{courses:a0b36pr2:lectures:lecture04-slides.pdf|}}
* zkrácená verze: {{courses:a0b36pr2:lectures:lecture04-handout.pdf|}}
* zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture04-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture04-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture04-demos.zip|}}
*
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2016/03/24 15:22//
===== 5. Vícevláknové aplikace =====
Paralení programování, procesy a role operačního systému; vlákna v operačním systému; problém souběhu, synchronizace vláken a monitor. Vlákna v Javě, vytvoření, synchronizace a komunikace mezi vlákny. Příklad vláken v GUI (Swing), návrhový vzor pozorovatel (observer) a SwingWorker.
* prezentace: {{courses:a0b36pr2:lectures:lecture05-slides.pdf|}}
* zkrácená verze: {{courses:a0b36pr2:lectures:lecture05-handout.pdf|}}
* zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture05-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture05-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture05-demos.zip|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2016/03/22 17:56//
===== 6. Vícevláknové aplikace - příklady =====
Modely vícevláknových aplikací. Paralelní programování a ladění, problém uváznutí a problém souběhu. Příklad kreslení do plátna, síťové komunikace a aplikací klient/server. Přednášky je koncipována seminární formou s demonstrací příklad, konkrétní náplň tak bude přizpůsobena dle dotazů.
* prezentace: {{courses:a0b36pr2:lectures:lecture06-slides.pdf|}}
* zkrácená verze: {{courses:a0b36pr2:lectures:lecture06-handout.pdf|}}
* zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture06-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture06-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture06-demos.zip|}}
Demonstrační programy budou zvěřejněny po přednášce na základě dotazů a interakce během přednášky.
Informovativní pro zájemce -- Síťování a sokety v Javě
* prezentace: {{courses:a0b36pr2:lectures:lecture06-net-slides.pdf|}}
* zkrácená verze: {{courses:a0b36pr2:lectures:lecture06-net-handout.pdf|}}
* zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture06-net-handout-2x2.pdf|}}
Informovativní pro zájemce -- Boss/Worker model v Klient/Server aplikaci
* prezentace: {{courses:a0b36pr2:lectures:lecture06-tdijserv-slides.pdf|}}
* zkrácená verze: {{courses:a0b36pr2:lectures:lecture06-tdijserv-handout.pdf|}}
* zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture06-tdijserv-handout-2x2.pdf|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2016/03/30 18:20//
===== 7. Úvod do programovacího jazyka C =====
Jazyk C - překlad zdrojových kódů a linkování programu; příklad překladu programu a příklad programu s výstupem na standardní výstup.
* prezentace: {{courses:a0b36pr2:lectures:lecture07-slides.pdf|}}
* zkrácená verze: {{courses:a0b36pr2:lectures:lecture07-handout.pdf|}}
* zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture07-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture07-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture07-demos.zip|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] 2016/04/06 08:23//
===== 8. Jazyk C - část I =====
Jazyk C - syntax, proměnné, základní typy a literály; výrazy a operátory; příkazy a řízení běhu programu; pole, ukazatele, funkce a předávání parametrů; ukazatele a pole.
* prezentace: {{courses:a0b36pr2:lectures:lecture08-slides.pdf|}}
* zkrácená verze: {{courses:a0b36pr2:lectures:lecture08-handout.pdf|}}
* zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture08-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture08-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture08-demos.zip|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] // 2016/04/14 15:27 **Aktualizace**: binární zápis celočíselného literálu (21-22).
===== 9. Jazyk C - část II =====
Jazyk C - modifikátor const; ukazatel na konstantní proměnnou; konstantní ukazatel; ukazatel na funkci; definice typu typedef; struktury a uniony; dynamická alokace paměti; práce se soubory; funkce standardní knihovny C.
* prezentace: {{courses:a0b36pr2:lectures:lecture09-slides.pdf|}}
* zkrácená verze: {{courses:a0b36pr2:lectures:lecture09-handout.pdf|}}
* zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture09-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture09-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture09-demos.zip|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] // 2016/04/20 18:32
===== 10. Příklady v C =====
Přednáška je věnována praktickým ukázkám programování v C.
Předpokládaný příklad v jazyce C:
* prezentace: {{courses:a0b36pr2:lectures:lecture10-slides.pdf|}}
* zkrácená verze: {{courses:a0b36pr2:lectures:lecture10-handout.pdf|}}
* zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture10-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture10-handout-3x3.pdf|}}
* přiložené demonstrační programy: {{courses:a0b36pr2:lectures:lecture10-demos.zip|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] // 2016/04/27 18:47
===== 11. Verzovací systémy - Test =====
Na přednášce si projdeme zadání testů a očekávané odpovědi. Diskuse na testem,
Dále se na přednášce seznámíme se základní filozofií verzovacích systému (centralizovaných a distribuovaných). Vykládaná látka je informativní.
* prezentace: {{courses:a0b36pr2:lectures:lecture11-slides.pdf|}}
* zkrácená verze: {{courses:a0b36pr2:lectures:lecture11-handout.pdf|}}
* zkrácená verze 2x2: {{courses:a0b36pr2:lectures:lecture11-handout-2x2.pdf|}}
* zkrácená verze 3x3: {{courses:a0b36pr2:lectures:lecture11-handout-3x3.pdf|}}
--- //[[faiglj@fel.cvut.cz|Jan Faigl]] // 2016/05/04 18:21
===== 12. Vyzvaná přednáška - Návrhové vzory v akci (Ing. Karel Čemus) =====
Učebnic návrhových vzorů je celá řada, avšak většina z nich se zaměřuje na teoretické vysvětlení konceptu, jeho demonstraci pomocí diagramu, případně AHA příkladu. Tato přednáška nemá za cíl důkladně vysvětlit konkrétní návrhové vzory, všechny jejich výhody a nevýhody, ani možné implementace. To si lze přečíst v knihách. Během přednášky společně navrhneme architekturu jednoduché aplikace Piškvorky, na které si demonstrujeme praktické využití návrhových vzorů. Ukážeme si, proč je dobré je ovládat a jak nám to může pomoci při řešení reálných problémů. Seznámíme se i s využitím několika často používaných vzorů a zjistíme, že většina běžných problémů má již kvalitní a ověřené řešení.
===== 13. Vyzvaná přednáška - Funkcionální prvky Java 8 =====
Lambda funkce, closures, defaultní metody, streamy, optional datatype.
* prezentace: {{:courses:a0b36pr2:lectures:lecture13.pdf|}}
* Zdrojové kódy ukázkových příkladů jsou ke stažení na gitlabu: [[https://gitlab.fel.cvut.cz/hrstkon1/A0B36PR2_104_109]]
===== 14. Zkouškový test =====
Přednáška bude věnován zkouškovému testu.