{{indexmenu_n>1000}} ====== Přednášky ====== Podklady přednášek pro aktuální akademický rok 2023/2024. 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. K většině přednášek jsou k dispozici vide a komentovanými slidy. Tyto materiály nenahrazují přednášku, mohou být nedokonalé, zastaralé a nekompletní. **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.** Podklady mohou být průběžné aktualizovány. /* Přednášky probíhají prostřednictvím kanálu na platfomě MS TEAMS v teamu předmětu [[https://teams.microsoft.com/l/channel/19%3ab8db29d1d757428583b10c9442e8ae2e%40thread.tacv2/Prednasky%2520(St%252012.45%2520-%252014.15)?groupId=70a03051-5e60-4fa6-a778-63e9fba90a12&tenantId=f345c406-5268-43b0-b19f-5862fa6833f8|zde]] minimálně první 4 týdny semestru (další dle vývoje situace). */ ===== Harmonogram přednášek ===== ^ Týden ^ Datum ^ Přednáška ^ | **1** | 21.2.2024 | [[courses:b0b36pjv:prednasky?&#uvod|01 - Úvod]] [Ladislav Serédi] | | **2** | *28.2.2024 | [[courses:b0b36pjv:prednasky?&#objektove_orientovane_programovani|02 - Objektově orientované programování]] [Ladislav Serédi] | | **3** | *6.3.2023 | [[courses:b0b36pjv:prednasky?&#vyctove_typy_a_kolekce_v_jave_genericky_typ|03 - Výčtové typy a kolekce v Javě, generické typy]] [Ladislav Serédi]| | **4** | 13.3.2024 | [[courses:b0b36pjv:prednasky?&#vyjimky_a_soubory|04 - Výjimky a soubory]] [Jiří Vokřínek]| | **5** | 20.3.2024 | [[courses:b0b36pjv:prednasky?&#vicevlaknove_aplikace_1|05 - Vícevláknové aplikace 1]] [Jiří Vokřínek]| | **6** | *27.3.2024 | [[courses:b0b36pjv:prednasky?&#gui|06 - GUI v Javě]] [Ladislav Serédi]| | **7** | *3.4.2024 | [[courses:b0b36pjv:prednasky?&#gui_v_jave_udalostmi_rizene_programovani|07 - GUI v Javě, událostmi řízené programování]] [Ladislav Serédi]| | **8** | 10.4.2024 | [[courses:b0b36pjv:prednasky?&#vicevlaknove_aplikace_2|08 - Vícevláknové aplikace 2]] [Jiří Vokřínek]| | **9** | 17.4.2024 | [[courses:b0b36pjv:prednasky?&#sokety_a_sitovani|09 - Sokety a síťování]] [Jiří Vokřínek]| | **10** | *24.4.2024 | Samostudium | | **11** | 1.5.2023 | Státní svátek | | **12** | (Čt)9.5.2023 | [[courses:b0b36pjv:prednasky?&#vykon_a_profilovani|10 - Výkon a profilování]] [Jiří Vokřínek] | | **13** | 15.5.2023 | [[courses:b0b36pjv:prednasky?&#uklizeni_odpadku_a_analyza_uniku|11 - Uklízení odpadků a analýza úniku]] [Jiří Vokřínek] | | **14** | 22.5.2023 | [[courses:b0b36pjv:prednasky?&#samostudium_doplnujicich_materialu|Samostudium doplňujících materiálů]] | /* | **14** | 20.5.2020 | **Zkouškový test** {{ :courses:b0b36pjv:prednasky:instrukce.pptx | }}| */ ===== 01 - Úvod ===== Organizace předmětu; programovací jazyk Java. Úvod do objektově orientovaného modelování (analýzy a návrhu); objektově orientované programování (OOP); struktura objetu a zapouzdření. Konstruktor, singleton, metoda main, immutable objekty. * prezentace: {{:courses:b0b36pjv:prednasky:lecture01-slides.pdf|}} * zkrácená verze: {{:courses:b0b36pjv:prednasky:lecture01-handout.pdf|}} * zkrácená verze 2x2: {{:courses:b0b36pjv:prednasky:lecture01-handout-2x2.pdf|}} * přiložené demonstrační programy: {{ :courses:b0b36pjv:prednasky:01.zip|}} --- //Aktualizace 2020/02/19 9:25// ===== 02 - Objektově orientované programování ===== Objektově orientované programování. Immutable. Dědičnost, kompozice a polymorfismus. Dispatch a double dispatch. * prezentace: {{:courses:b0b36pjv:prednasky:lecture02-slides.pdf|}} {{:courses:b0b36pjv:prednasky:lecture02Geom.pdf|}} {{:courses:b0b36pjv:prednasky:lecture02Matrix.pdf|}} * zkrácená verze: {{:courses:b0b36pjv:prednasky:lecture02-handout.pdf|}} * zkrácená verze 2x2: {{:courses:b0b36pjv:prednasky:lecture02-handout-2x2.pdf|}} * přiložené demonstrační programy: {{:courses:b0b36pjv:prednasky:02.zip|}} {{:courses:b0b36pjv:prednasky:02GUI.zip|}} {{:courses:b0b36pjv:prednasky:02matrix.zip|}} --- //Aktualizace 2019/02/25 12:50 -- úprava single-dispatch demonstračního příkladu// ===== 03 - Výčtové typy a kolekce v Javě, generický typ ===== Výčtové typy, kolekce, iterátor, JFC. Generické typy. * prezentace: {{:courses:b0b36pjv:prednasky:lecture03-slides.pdf|}} * zkrácená verze: {{:courses:b0b36pjv:prednasky:lecture03-handout.pdf|}} * zkrácená verze 2x2: {{:courses:b0b36pjv:prednasky:lecture03-handout-2x2.pdf|}} * přiložené demonstrační programy: {{:courses:b0b36pjv:prednasky:03.zip|}} --- //Aktualizace 2017/03/09 7:42// ===== 04 - Výjimky a soubory ===== Výjimky. Soubory. * prezentace: {{:courses:b0b36pjv:prednasky:lecture04-slides.pdf|}} * zkrácená verze: {{:courses:b0b36pjv:prednasky:lecture04-handout.pdf|}} * zkrácená verze 2x2: {{:courses:b0b36pjv:prednasky:lecture04-handout-2x2.pdf|}} * přiložené demonstrační programy: {{:courses:b0b36pjv:prednasky:04.zip|}} * komentovaná prezentace (přístupná po **fakultním** přihlášení) [[https://drive.google.com/file/d/1O17TGhPeZ0s6FzylYY2vMjFeRGIV64yo/view?usp=sharing|video lekce 4]] --- //Aktualizace 2020/03/25 8:45 - přidáno video s komentovanou prezentací// ===== 05 - Vícevláknové aplikace 1 ===== Paralelismus, synchronizace výpočetních toků, vícevláknové aplikace. * prezentace: {{:courses:b0b36pjv:prednasky:lecture07-slides.pdf|}} * zkrácená verze: {{:courses:b0b36pjv:prednasky:lecture07-handout.pdf|}} * zkrácená verze 2x2: {{:courses:b0b36pjv:prednasky:lecture07-handout-2x2.pdf|}} * přiložené demonstrační programy: {{:courses:b0b36pjv:prednasky:07.zip|}} * komentovaná prezentace (přístupná po **fakultním** přihlášení) [[https://drive.google.com/file/d/1ctKA7kTnJNWfwY1PgXhJQ-c5oLsonWDG/view?usp=sharing|video lekce 7]] --- //Aktualizace 2020/04/21 21:55 - přidáno video s komentovanou prezentací// ===== 06 - GUI ===== GUI v Javě, komponenty a kontejnery, dialogová okna (modalita). * prezentace: {{:courses:b0b36pjv:prednasky:lecture05-slides.pdf|}} * zkrácená verze: {{:courses:b0b36pjv:prednasky:lecture05-handout.pdf|}} * zkrácená verze 2x2: {{:courses:b0b36pjv:prednasky:lecture05-handout-2x2.pdf|}} * přiložené demonstrační programy: {{:courses:b0b36pjv:prednasky:05.zip|}} * komentovaná prezentace (přístupná po **fakultním** přihlášení) [[https://drive.google.com/file/d/1Y0plTJ8ieO0g8_qL99Yqs74QSdmtopGD/view?usp=sharing|video lekce 5]] --- //Aktualizace 2020/04/07 15:35 - přidáno video s komentovanou prezentací// ===== 07 - GUI v Javě, událostmi řízené programování ===== GUI v Javě, Model-View-Controller, Event-Driven Programming, vnitřní třídy. * prezentace: {{:courses:b0b36pjv:prednasky:lecture06-slides.pdf|}} * zkrácená verze: {{:courses:b0b36pjv:prednasky:lecture06-handout.pdf|}} * zkrácená verze 2x2: {{:courses:b0b36pjv:prednasky:lecture06-handout-2x2.pdf|}} * přiložené demonstrační programy: {{:courses:b0b36pjv:prednasky:06.zip|}} * komentovaná prezentace (přístupná po **fakultním** přihlášení) [[https://drive.google.com/file/d/1hX7bgiJDLt1_m2ET0iISzcspAAD1gAzw/view?usp=sharing|video lekce 6]] --- //Aktualizace 2020/04/10 17:02 - přidáno video s komentovanou prezentací// ===== 08 - Vícevláknové aplikace 2 ===== Vícevláknové aplikace - příklad GUI, vzor observer. Modely vícevláknových aplikací. * prezentace: {{:courses:b0b36pjv:prednasky:lecture08-slides.pdf|}} * zkrácená verze: {{:courses:b0b36pjv:prednasky:lecture08-handout.pdf|}} * zkrácená verze 2x2: {{:courses:b0b36pjv:prednasky:lecture08-handout-2x2.pdf|}} * přiložené demonstrační programy: {{:courses:b0b36pjv:prednasky:08.zip|}}, {{:courses:b0b36pjv:prednasky:08gui.zip|}}, {{:courses:b0b36pjv:prednasky:08canvas.zip|}}, {{ :courses:b0b36pjv:prednasky:08canvasdemo24.zip |}} * komentovaná prezentace (přístupná po **fakultním** přihlášení) [[https://drive.google.com/file/d/1pQ2ExOtwXdxb3lKFu7bUkEpwVAOQOmTr/view?usp=sharing|video lekce 8]] --- //Aktualizace 2024/04/10 10:50 - přidán zjednodušený příklad CanvasDemo// ===== 09 - Sokety a síťování ===== Síťování, síťová API - soket, jednoduchý klient a server, boss/worker server/klient. * prezentace: {{:courses:b0b36pjv:prednasky:lecture09-slides.pdf|}} * zkrácená verze: {{:courses:b0b36pjv:prednasky:lecture09-handout.pdf|}} * zkrácená verze 2x2: {{:courses:b0b36pjv:prednasky:lecture09-handout-2x2.pdf|}} * přiložené demonstrační programy: {{:courses:b0b36pjv:prednasky:09.zip|}} {{ :courses:b0b36pjv:prednasky:09-2021.zip |}} * komentovaná prezentace (přístupná po **fakultním** přihlášení) [[https://drive.google.com/file/d/1Z1d9Nct2Zj2m1Siryyn82eYXs1lILWQu/view?usp=sharing|video lekce 9]] --- //Aktualizace 2020/05/12 19:48 - přidáno video s komentovanou prezentací// --- //Aktualizace 2021/04/14 10:30 - přidány zjednodušené příklady// ===== 10 - Výkon a profilování ===== Výkon aplikace, profilování v NetBeans, příklady. * prezentace: {{:courses:b0b36pjv:prednasky:lecture10.pdf|}} * zkrácená verze: * zkrácená verze 2x2: * přiložené demonstrační programy: {{:courses:b0b36pjv:prednasky:10.zip|}} ===== 11 - Uklízení odpadků a analýza úniku ===== Správa paměti, Garbage Collection, Escape Analysis a alokace na stacku. * prezentace: {{:courses:b0b36pjv:prednasky:lecture11.pdf|}} * zkrácená verze: * zkrácená verze 2x2: * přiložené demonstrační programy: {{:courses:b0b36pjv:prednasky:11.zip|}} --- //Aktualizace 2019/09/05 11:22 - drobné opravy textu// ===== Samostudium doplňujících materiálů ===== [[https://www.youtube.com/watch?v=ADxUsCkWdbE|Concurrency Concepts in Java by Douglas Hawkins]] * model paměti, vliv hardware * chování vláken může být "zmatené" * immutable objekty, atomicita * relevantní k přednášce 5 a 8 [[https://www.youtube.com/watch?v=zdz_pf22nOI|Java Performance Puzzlers 2018 - New by Douglas Hawkins]] * výkonnost programu * zajímavé (a mnohdy neintuitivní) případy * JIT a dynamická optimizace * relevantní k přednášce 10 a 11 /* ===== 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í. */ /*===== Vyzvaná přednáška - Funkcionální prvky Java 8 ===== * Presentace [[https://docs.google.com/presentation/d/1lxA2dVTGzLshzVW2BcxqTu8T4RJILYhJDa4RfNQktsc/edit?usp=sharing|Google Slides]] * Zdrojové kódy [[https://gitlab.fel.cvut.cz/hrstkon1/java8-lecture.git|Git Repo]] */ Podklady budou průběžné aktualizovány