Skip to content

Latest commit

 

History

History
112 lines (111 loc) · 4.82 KB

File metadata and controls

112 lines (111 loc) · 4.82 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 sad 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 6.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