====== Přednášky ======
/* 2020 */
**1. Klíčové koncepty modelování systémů I** [Kadleček] {{:courses:b6b36omo:1_-_klicove_koncepty_modelovani_systemu_i_2018.pdf| }}
* Programovací paradigmata
* Deklarativní versus imperativní reprezentace
* Práce s komplexitou
* Dekompozice
* Hierarchie
* Abstrakce používané v softwarovém vývoji(jmenné, datové, funkcionální, objektové)
* SOLID, DRY
**2. Objektově orientovaný přístup I** [Kadleček] {{ :courses:b6b36omo:2_-_objektove_orientovany_pristup_2018.pdf| }}
* Objekty, třídy a hierarchie tříd
* Zapouzdření
* Interface a abstraktní třídy
* Dědičnost
* Message passing
* Class diagramy a příklady systémů modelovaných pomocí OOP
* Volba správného přístupu
* Rozdíl mezi asociací, agregací a kompozicí
* Dědičnost versus kompozice
* Polymorfismus
* Overloading versus overriding
*Příloha k 2 a 3 (jen pro zajímavost)* {{:courses:b6b36omo:2_-_appendix_evoluce_jazyka_java.pdf| }}
**3a. Klíčové koncepty modelování systémů II** [Kadleček] {{:courses:b6b36omo:3a_-_klicove_koncepty_modelovani_systemu_ii.pdf| }}
* Abstraktní datové typy, mutabilita, imutabilita, idempotentnost
* Rekurze, datové typy v rekurzi
* Primitiva, vrstvy, principy kombinace
* Metalingvistická abstrakce
**3b. Funkcionánlní programování v Java ** [Kadleček] {{:courses:b6b36omo:3b_-_funkcionalni_programovani_v_java_-_2020_1_.pdf| }}
* Pure funkce
* Funkce první třídy a funkce vyššího řádu
* Lambda expressions
* Closures
* Curying
* Representation transparency
* Lazy evaluation
**4. Creational design patterns** [Kadleček] {{:courses:b6b36omo:4_-_creational_design_patterns_2020.pdf| }}
* Factory a Abstract Factory
* Builder
* Prototype
* Singleton
* Dependency injection
* Příklady
**5. Structural design patterns** [Kadleček] {{ :courses:b6b36omo:5_-_structural_design_patterns_2020.pdf| }}
* Adapter
* Proxy
* Bridge
* Composite
* Facade
* Decorator
* Flyweight
* Příklady
**6. Behavioral design patterns** [Kadleček] {{:courses:a7b36omo:6_-_behavioral_design_patterns_2_.pdf| }}
* Iterator
* Chain of responsibility
* Strategy
* Visitor
* Observer
* Template method
* State
* Memento
* Interpreter
* Příklady
**7. Datové struktury a patterny** [Kadleček] {{ :courses:b6b36omo:7_-_data_design_patterns_2018.pdf| }}
* Plně persistentní, částečně persistentní datové a retroaktivní datové struktury
* Retroaktivní datové struktury
* Lazy Loading, Object pool, Cache
**8. Map, filter, reduce pattern v NoSQL světě** [Kadleček] NEW {{:courses:b6b36omo:8_-_map_reduce_patterns_2018.pdf| }}
* Map reduce framework
* Sumarizační patterny
* Filtrační patterny
* Organizační patterny
* Join patterny
* Meta patterny
**9. Map, filter, reduce pattern v Java ** [Kadleček] {{:courses:a7b36omo:9_-_map_2ffilter_2freduce_v_java_1_.pdf| }}
* Abstrakce Control Flow
* Map
* Filter
* Reduce
* Collect
* Paralelizace map reduce v Java a performance pohled
**10. Patterny pro tvorbu Microservices ** [Kadleček] {{ :courses:b6b36omo:10_-_patterny_pro_microservices.pptx_9_.pdf| }}
* Materialized view
* Event sourcing
* CQRS
* Eventual consistency
* Saga
**11. Generické programování** [Šebek] NEW {{:courses:a7b36omo:generics.pdf| }}
* Wildcards
* Horni, dolní mez
* Generické typy
* Parametrizované objekty
* Generika a subtypy
**12. Specifikace, Návrhy specifikací, Web API, Apiary, Swagger, GraphQL** [Šebek] NEW {{:courses:b6b36omo:12_specifikace_rozhrani_v_2.pdf | }} {{:courses:b6b36omo:12_graphql.pdf | }}
* Proč specifikace
* Behaviorální ekvivalence
* Struktura a modelování specifikace
* Testování specifikací
* Specifikace pro mutující metody, Null Reference, pre a post conditions
* Návrh systému výjimek
* Vyjímky pro chyby a speciální výsledky, zneužívání výjimek
* Deterministické versus nedeterministické specifikace
* Deklarativní versus operativní specifikace
* Těsné versus volné specifikace
* Návrh dobrých specifikací
* Webové API
**13. Mikroservisy 2 a úvod do reaktivních architektur** [Kadleček] NEW {{:courses:b6b36omo:uvod_do_reaktivnich_architektur.pdf| }}
* Orchestrace, agregace mikroservis
* Servisní gateway
* Reactive manifesto
* Circuit breaker
* Backpressure
* Future (promise) a monáda
**13. STARÉ - NEUČIT NA ZKOUŠKU. Patterny pro tvorbu UI** [Kadleček] {{:courses:b6b36omo:13_-_patterny_pro_ui.pptx_2_.pdf| }}
* Základy UI - HTML, DOM, JavaScript, CSS
* Single Page Application
* Model View Controller, Model View Presenter, Model View View Model
* Patterny Future/Promise a monáda
* Moderní webové frameworky, Angular, React/Redux intro