- Значення та тип даних
- Ідентифікатори: змінна та константа, аргумент та параметр
- Літерал, вираз, оператор
- Блок коду, цикл, умова
- Процедура та функція
- Модулі, компоненти, бібліотеки
- Мови та парадигми програмування
- Технологічні стеки
- Debug, обробка помилок, лінтери, транслятори та компілятори
- Системи контролю версій та пакетні менеджери, git
- Масиви та об'єкти
- Робота з рядками
- Функції, іменовані та анонімні, першого класу, стрілкові
- Устрій пам'яті додатків, стек та куча (heap)
- Області видимості та контексти
- Базове розуміння рекурсії та забезпечення виходу
- Таймери, EventEmitter, події
- Колекції, множини, хештаблиці
- Робота з файлами
- Записи та структури (struct)
- Серіалізація та десеріалізація
- Обробка помилок та винятків (exceptions)
- Шаблонні рядки та юнікод, регулярні вирази та парсинг
- Антипатерни процедурного програмування та загальні для усіх парадигм
- Code Review, рефакторинг: причини, цілі, техніки та процес
- Контексти та замикання (closure)
- Часткове застосування (partial) та карірування (сгккн), функції вищого порядку (higher order functions), колбеки
- Чеїнінг функцій (functional chaining) та об'єктів (object method chaining)
- Рекурсія: непряма та хвостова, стек, вихід
- Композиція функцфй: pipe, compoSE
- Функції-обгортки, мемоізація
- Функції-фабрики та пули об'єктів
- Класи, прототипне програмування та успадкування
- Домішки та їх небезпека: mixin, extend, Object.assign
- Списки: однозв'язні, двозв'язкові, циклічні, розгорнуті
- Стек, черга, дек, графові структури
- Огляд парадигми: Об'єктно-орієнтоване програмування
- Принципи: абстрагування, інкапсуляція, успадкування, поліморфізм
- Приховування в ООП та особливості на JavaScript
- Інтерфейси vs успадкування у ООП
- Асоціація, агрегація та композиція об'єктів
- Антипатерни об'єктно-орієнтованого програмування
- Дженерики та узагальнене програмування (generic programming)
- Огляд парадигми: Функціональне програмування
- Функціональні об'єкти, функтори та монади
- Огляд парадигм: Реактивне програмування
- Огляд парадигм: Автоматне програмування
- Асинхронне програмування на callback-ах та async/await
- Тестування: юніттести, системне та інтеграційне тестування
- Контрактне програмування
- Оцінка складності алгоритмів
- Вимірювання продуктивності коду та оптимізація
- Інтроспекція та рефлексія
- Мономорфний та поліморфний код, інлайн-кеш, приховані класи
- Незмінні структури даних (immutable)
- Введення в патерни GRASP, SOLID, GoF
- GRASP з адаптацією для JavaScript та Node.js
- GRASP: Творець та контролер
- GRASP: Принцип інформаційного експерта (information expert)
- GRASP: Зачеплення та зв'язність (coupling and cohesion)
- GRASP: Чиста вигадка (pure fabrication)
- GRASP: Посередник, стійкість до змін
- Закон Деметри (LoD - Law of Demeter)
- Генератори та асинхронні генератори
- Ітератори та асинхронні ітератори
- Принципи SOLID
- GoF: Породжувальні шаблони (creational)
- GoF: Структурні шаблони (structural)
- GoF: Поведінкові шаблони (behavioral)
- to be continued
- Асинхронне та паралельне програмування
- to be continued