|
| 1 | +# Obsah |
| 2 | + |
| 3 | +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 |
| 4 | +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 |
| 5 | +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 |
| 6 | +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 |
| 7 | +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 |
| 8 | +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 |
| 9 | +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ů |
| 10 | +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 |
| 11 | +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 |
| 12 | +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) |
| 13 | +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 |
| 14 | +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 |
| 15 | +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 |
0 commit comments