- Імперативний та декларативний підхід
- Структуроване та неструктуроване програмування
- Процедурне програмування
- Функціональне програмування
- Програмування на базі подій та реактивне програмування
- Об'єктно-орієнтоване програмування
- Прототипне програмування
- Узагальнене програмування та дженеріки
- Автоматне програмування, скінченні автомати (машини станів)
- Модель акторів
- Спеціалізовані мови для предметних областей (DSL)
- Програмування на потоках даних
- Метапрограмування
- Динамічна інтерпретація метамоделей
- Мультипарадигмене програмування та поєднання декількох парадигм
- Контрактне прорамування
- Компонентний підхід
- Паралельне та асинхронне програмування
- Базові концепції, синтаксис та семантика мов JavaScript та TypeScript
- Стан застосунку, структури даних та колекції
- Підходи до роботи зі станом: stateful and stateless
- Структури даних у JavaScript: стек, черга, дек, дерева та графи
- Проекції та відображення наборів даних
- Оцінка обчислювальної складності та оптимізація виконання у v8
- Що таке технологічний стек та огляд стеків для веб
- Середовище розробки та налагодження коду
- Ітерування: рекурсія, ітератори та генератори
- Структура додатку: файли, модулі, компоненти, системи модульності
- Об'єкт, прототип та клас
- Часткове застосування та каррування, композиція функцій у JavaScript
- Чейнінг для методів та функцій, домішки (mixins), мемоізація, фабрики
- Залежності та бібліотеки, зачеплення та зв'язність коду
- Антипатерни, ревью коду та рефакторинг
- Угоди та стандарти, контракти
- Тестування для бекенд та фронтенд
- Події, таймери, лісенери
- Регулярні вирази та BNF
- Інтроспекція та рефлексія, серіалізація та десеріалізація
- Огляд паралельного програмування, загальна пам'ять та примітиви синхронізації
- Асинхронність на колбеках (функції зворотнього виклику)
- Блокуючі та неблокуючі операції, I/O (введення-виведення)
- Паттерни EventEmitter та AsyncEmitter
- Асинхронні примітиви: Thenable, Promise, Future, Deferred
- Співпрограми, горутіни, async/await
- Адаптери між асинхронними контрактами: promisify, callbackify, asyncify
- Асинхронна та паралельна сумісність
- Підхід до передачі повідомлень та модель акторів
- Асинхронна черга та асинхронні колекції
- Асинхронні коллектори даних
- Асинхронні генератори та ітератори
- Обробка помилок та відміна асинхронних операцій
- Асинхронна композиція функцій
- Паттерн відкритий конструктор (Revealing Constructor)
- Паттерн спостерігач (Observer + Observable)
- Async hooks для Node.js
- Shared memory у режимі багатопоточності Node.js
- Асинхронний pool для worker thread у Node.js
- Lock-free структури даних
- Декомпозиція, іменування та зв'язування
- Взаємодія між компонентами ПЗ
- Зв'язування через простори імен
- Взаємодія за допомогою викликів та колбеків
- Взаємодія за допомогою подій та повідомлень
- Інтерфейси, протоколи та контракти
- Цибулева (onion) або багатошарова архітектура
- Аналіз ризиків, слабкі сторони, нефункціональні вимоги
- Координація та корегування процесу
- Безперервна інтеграція та розгортання
- Багатоаспектна оптимізація
- Основи паралельних обчислень
- Бази даних та постійне зберігання
- Ключ-значення та інші абстрактні структури даних
- Реляційна модель даних та ER-діаграми
- Безсхемні, об'єктно- та документо-орієнтовані бази даних
- Ієрархічна модель даних та графові бази даних
- Колонкові бази даних та in-memory бази даних
- Розподілені системи
- Міжпроцесна взаємодія
- Безконфліктні репліковані типи даних (CRDT)
- Узгодженість, доступність та розподіленість
- Стратегії вирішення конфліктів
- Протоколи консенсусу
- CQRS, EventSourcing
- Введення в технологію Node.js, огляд вбудованого API
- Асинхронне програмування в Node.js
- Робота з файлами, буферами та файловими потоками в Node.js
- Спостереження за файловою системою в Node.js
- Структура та архітектура додатків
- Модулі ECMA, Common.js, Module API
- Модулі та пакети, використання package.json та node_modules
- Міжпроцесна взаємодія (IPC), воркер-треди
- Domain Driven Design для інформаційних систем
- Фреймворк-агностік та транспорт-агностік підходи 11: Ізоляція коду та впровадження залежностей 12: Застосування принципів GRASP, SOLID, DDD, LoD, GoF
- Розробка серверів додатків і API на Node.js
- Клієнт-сервер на Node.js, протоколи TCP і UDP, DNS
- Сервер HTTP, HTTP/2, HTTP/3: маршрутизація, кластер, IP sticky
- HTTP сесії і файли cookie, fetch API, WebSocket, віддача статики
- Скаффолдинг для API, UI та даних
- Високонавантажені та розподілені додатки
- Робота з базами даних, шар доступу до даних, курсор, транзакція
- Memory leaks в Node.js і JavaScript, збірка мусора і профілювання
- Atomics, SharedArrayBuffer, worker_threads в Node.js
- Безпека, надійність та управління інфраструктурою
- Тулінг: логування, graceful shutdown, CI, CD
- Serverless хмари (FaaS) та ізоляція контекстів