Skip to content

Latest commit

 

History

History
111 lines (110 loc) · 5 KB

Index.md

File metadata and controls

111 lines (110 loc) · 5 KB

Obsah

  1. Úvod 1.1. Přístup k výuce programování
    1.2. Příklady v jazycích JavaScript, Python a C
    1.3. Modelování: abstrakce a opětovné použití
    1.4. Algoritmus, program, syntaxe, jazyk
    1.5. Dekompozice a separace odpovědnosti
    1.6. Přehled specializace softwarového inženýra
    1.7. Přehled programovacích paradigmat
  2. Základní pojmy
    2.1. Hodnota, identifikátor, proměnná a konstanta, literál, přiřazení
    2.2. Datové typy, skalární, referenční a strukturované typy
    2.3. Kontexty a lexikální rozsah
    2.4. Operátor a výraz, blok kódu, funkce, smyčka, podmínka
    2.5. Procedurální paradigma, volání, zásobník a halda
    2.6. Funkce vyššího řádu, čistá funkce, vedlejší účinky
    2.7. Uzávěry, funkce zpětného volání, zabalení a události
    2.8. Výjimky a řešení chyb
    2.9. Monomorfní kód v dynamických jazycích
  3. Stav aplikace, datové struktury a kolekce
    3.1. Stavové a bezstavové přístupy (stateful and stateless)
    3.2. Struktury a záznamy
    3.3. Pole, seznam, sada, n-tice
    3.4. Slovník, hashovací tabulka a asociativní pole
    3.5. Zásobník, fronta, deque
    3.6. Stromy a grafy
    3.7. Projekce a zobrazení datových
    3.8. Odhad výpočetní složitosti
  4. Rozšířené koncepty
    4.1. Co je technologický stack
    4.2. Vývojové prostředí a ladění
    4.3. Iterace: rekurze, iterátory a generátory
    4.4. Stavební bloky aplikací: soubory, moduly, komponenty
    4.5. Objekt, prototyp a třída
    4.6. Částečná aplikace a curryfikace, skládání funkcí
    4.7. Řetězení pro metody a funkce (chaining)
    4.8. Mixiny (mixins)
    4.9. Závislosti a knihovny
  5. Běžná programovací paradigmata
    5.1. Imperativní a deklarativní přístup
    5.2. Strukturované a nestrukturované programování
    5.3. Procedurální programování
    5.4. Funkcionální programování
    5.5. Objektově orientované programování
    5.6. Programování založené na prototypech
  6. Návrhové antivzory
    6.1. Společné anti-vzory pro všechna paradigmata
    6.2. Procedurální antivzory
    6.3. Objektově orientované antivzory
    6.4. Funkční antivzory
  7. Vývojový proces
    7.1. Životní cyklus softwaru, analýza předmětné oblasti
    7.2. Programovací konvence a normy
    7.3. Testování: jednotkové testy, systémové a integrační testování
    7.4. Kontrola a refaktoring kódu
    7.5. Odhad zdrojů, plán rozvoje a harmonogram
    7.6. Analýza rizik, slabá místa, nefunkční požadavky
    7.7. Koordinace a úprava procesů
    7.8. Průběžná integrace a nasazení
    7.9. Optimalizace mnoha aspektů
  8. Pokročilé koncepty
    8.1. Události, časovače a EventEmitter
    8.2. Introspekce a reflexe
    8.3. Serializace a deserializace
    8.4. Regulární výrazy
    8.5. Memoizace
    8.6. Návrhové vzory: Factory, Poll
    8.7. Typovaná pole
    8.8. Projekce
    8.9. I/O (vstup-výstup) a soubory
  9. Architektura
    9.1. Dekompozice, pojmenování a spojování
    9.2. Interakce mezi softwarovými komponentami
    9.3. Propojení přes jmenné prostory
    9.4. Interakce s voláními a zpětnými voláními
    9.5. Interakce s událostmi a zprávami
    9.6. Rozhraní, protokoly a smlouvy
    9.7. Cibulová (onion) nebo vícevrstvá architektura
  10. Základy paralelních výpočtů
    10.1. Asynchronní programování
    10.2. Paralelní programování, sdílená paměť a synchronizační primitiva
    10.3. Asynchronní primitiva: Thenable, Promise, Future, Deferred
    10.4. Koprogramy, gorutiny, async/await
    10.5. Adaptéry mezi asynchronními kontrakty
    10.6. Asynchronní a paralelní kompatibilita
    10.7. Přístup předávání zpráv a model aktorů
    10.8. Asynchronní fronty i asynchronní kolekce
    10.8. Bezzámkové datové struktury (lock-free)
  11. Pokročilá programovací paradigmata
    11.1. Generické programování
    11.2. Událostní a reaktivní programování
    11.3. Programování automatů: konečné automaty (stavové stroje)
    11.4. Jazykově orientované programování a DSL
    11.5. Programování toku dat
    11.6. Metaprogramování
    11.7. Dynamická interpretace metamodelu
  12. Databáze a perzistentní úložiště
    12.1. Historie databáze a navigační databáze
    12.2. Klíč-hodnota a další abstraktní datové struktury
    12.3. Relační datový model a ER-diagramy
    12.4. Bezschémové, objektově orientované a dokumentově orientované databáze
    12.5. Hierarchické a grafové databáze
    12.6. Sloupcové databáze a databáze v paměti
    12.7. Distribuované databáze
  13. Distribuované systémy
    13.1. Meziprocesová komunikace
    13.2. Bezkonfliktní replikované datové typy (CRDT)
    13.3. Konzistence, dostupnost a distribuce
    13.4. Strategie řešení konfliktů
    13.5. Konsensuální protokoly
    13.6. CQRS, EventSourcing