====== Přednášky ======
/* 2020 */
**1. Klíčové koncepty modelování systémů I** [Kadleček] 2022 NEW {{:courses:b6b36omo:omo_1_klicove_koncepty_modelovani_2022.pdf| }}
* Programovací paradigmata
* Deklarativní vs imperativní reprezentace
* Objektový vs funkcionální vs procedurální vs logický přístup
* Práce s komplexitou
* Dekompozice
* Hierarchie
* Abstrakce používané v softwarovém vývoji(jmenné, datové, funkcionální, objektové)
**2. Objektově orientovaný přístup I** [Kadleček] 2022 NEW {{ :courses:b6b36omo:omo_2_oop_2022.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| }}
**3. Funkcionální přístup ** [Kadleček] 2022 NEW {{ :courses:b6b36omo:omo_3_funkcionalni_pristup_2022v2.pdf| }}
* Pure funkce
* Funkce první třídy a funkce vyššího řádu
* Lambda expressions
* Closures
* Curying
* Representation transparency
* Lazy evaluation
**4. Klíčové koncepty modelování systémů II** [Kadleček] 2022 NEW {{ :courses:b6b36omo:omo_4_koncepty_ii_2022.pdf| }}
* Abstraktní datové typy, mutabilita, imutabilita, idempotentnost
* Rekurze, datové typy v rekurzi
* Primitiva, vrstvy, principy kombinace
* Metalingvistická abstrakce
**5. Vytváření objektů** [Kadleček] 2022 NEW {{ :courses:b6b36omo:omo_5_2022.pdf| }}
* Factory a Abstract Factory
* Builder
* Prototype
* Singleton
* Dependency injection
* Příklady
**6. Modelování chování aplikace** [Kadleček] 2022 NEW {{:courses:b6b36omo:omo_6_behavioral_patterns_2022.pdf| }}
* Iterator
* Chain of responsibility
* Strategy
* Visitor
* Observer
* Template method
* State
* Memento
* Interpreter
* Příklady
**7. Modelování struktury aplikace** [Kadleček] 2022 NEW {{ :courses:b6b36omo:omo_7_structural_design_patterns_2022.pdf| }}
* Adapter
* Proxy
* Bridge
* Composite
* Facade
* Decorator
* Flyweight
* Příklady
**8. Datové struktury a patterny** [Kadleček] 2022 NEW {{:courses:b6b36omo:omo_8_data_design_patterns_2022fix.pdf| }}
* Plně persistentní, částečně persistentní datové a retroaktivní datové struktury
* Retroaktivní datové struktury
* Lazy Loading, Object pool, Cache
**9. Funkcionální přístup II** [Kadleček] 2022 NEW {{:courses:b6b36omo:omo_9_functional_programming_ii_2022_.pdf| }}
* Supplier a Consumer
* Akumulátor
* Monáda a functor
* Future/Promisy
* Řešení chyb a NPE
**10. Map, filter, reduce pattern v Java ** [Kadleček] 2022 NEW {{:courses:b6b36omo:omo_10_java_streams_2022_fix.pdf| }}
* Abstrakce Control Flow
* Map
* Filter
* Reduce
* Collect
* Paralelizace map reduce v Java a performance pohled
**11a. Generické programování** [Šebek] 2022 NEW {{ :courses:b6b36omo:11_generics_2023.pdf | }}
* Wildcards
* Horni, dolní mez
* Generické typy
* Parametrizované objekty
* Generika a subtypy
**11b. Specifikace, Návrhy specifikací, Web API, Apiary, Swagger, GraphQL** [Šebek] 2022 NEW {{ :courses:b6b36omo:omo_11a_apiv2.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, REST, GraphQL
* Swagger, RestAPI
**12. Patterny pro tvorbu Microservices ** [Kadleček] 2022 NEW {{:courses:b6b36omo:omo_12_microservices_2022_.pdf| }}
* Microservisy a microservisní patterny
* Materialized view
* Event sourcing
* CQRS
* Eventual consistency
* Saga
**13. Domény, modely, eventy ** [Kadleček] 2022 NEW {{:courses:b6b36omo:omo_13_ddd_eda_mda_2023v2.pdf| }}
* Domain Driven Design
* Model Drive Architecture
* Eventy a Event Driven Architecture
**Old 1. STARÉ - NEUČIT NA ZKOUŠKU. Patterny pro tvorbu UI** [Kadleček] {{:courses:b6b36omo:omo_13_ddd_eda_mda_2023.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
**Old 2. STARÉ - NEUČIT NA ZKOUŠKU. Map, filter, reduce pattern v NoSQL světě** [Kadleček] {{:courses:b6b36omo:8_-_map_reduce_patterns_2018.pdf| }}
* Map reduce framework
* Sumarizační patterny
* Filtrační patterny
* Organizační patterny
* Join patterny
* Meta patterny