Skip to content

Latest commit

 

History

History
94 lines (80 loc) · 5.42 KB

File metadata and controls

94 lines (80 loc) · 5.42 KB

Інженерія програмного забезпечення (факультатив)

Модуль SE0 (з 10-13 років)

  • Значення та тип даних
  • Ідентифікатори: змінна та константа, аргумент та параметр
  • Літерал, вираз, оператор
  • Блок коду, цикл, умова
  • Процедура та функція
  • Модулі, компоненти, бібліотеки
  • Мови та парадигми програмування
  • Технологічні стеки
  • Debug, обробка помилок, лінтери, транслятори та компілятори
  • Системи контролю версій та пакетні менеджери, git
  • Масиви та об'єкти
  • Робота з рядками

Модуль SE1 (з 12-15 років)

  • Функції, іменовані та анонімні, першого класу, стрілкові
  • Устрій пам'яті додатків, стек та куча (heap)
  • Області видимості та контексти
  • Базове розуміння рекурсії та забезпечення виходу
  • Таймери, EventEmitter, події
  • Колекції, множини, хештаблиці
  • Робота з файлами
  • Записи та структури (struct)
  • Серіалізація та десеріалізація
  • Обробка помилок та винятків (exceptions)
  • Шаблонні рядки та юнікод, регулярні вирази та парсинг
  • Антипатерни процедурного програмування та загальні для усіх парадигм
  • Code Review, рефакторинг: причини, цілі, техніки та процес

Модуль SE2 (з 13-16 років)

  • Контексти та замикання (closure)
  • Часткове застосування (partial) та карірування (сгккн), функції вищого порядку (higher order functions), колбеки
  • Чеїнінг функцій (functional chaining) та об'єктів (object method chaining)
  • Рекурсія: непряма та хвостова, стек, вихід
  • Композиція функцфй: pipe, compoSE
  • Функції-обгортки, мемоізація
  • Функції-фабрики та пули об'єктів
  • Класи, прототипне програмування та успадкування
  • Домішки та їх небезпека: mixin, extend, Object.assign
  • Списки: однозв'язні, двозв'язкові, циклічні, розгорнуті
  • Стек, черга, дек, графові структури

Модуль SE3 (з 15-17 років)

  • Огляд парадигми: Об'єктно-орієнтоване програмування
  • Принципи: абстрагування, інкапсуляція, успадкування, поліморфізм
  • Приховування в ООП та особливості на JavaScript
  • Інтерфейси vs успадкування у ООП
  • Асоціація, агрегація та композиція об'єктів
  • Антипатерни об'єктно-орієнтованого програмування
  • Дженерики та узагальнене програмування (generic programming)
  • Огляд парадигми: Функціональне програмування
  • Функціональні об'єкти, функтори та монади
  • Огляд парадигм: Реактивне програмування
  • Огляд парадигм: Автоматне програмування
  • Асинхронне програмування на callback-ах та async/await
  • Тестування: юніттести, системне та інтеграційне тестування
  • Контрактне програмування

Модуль SE4 (з 16-19 років)

  • Оцінка складності алгоритмів
  • Вимірювання продуктивності коду та оптимізація
  • Інтроспекція та рефлексія
  • Мономорфний та поліморфний код, інлайн-кеш, приховані класи
  • Незмінні структури даних (immutable)
  • Введення в патерни GRASP, SOLID, GoF
  • GRASP з адаптацією для JavaScript та Node.js
  • GRASP: Творець та контролер
  • GRASP: Принцип інформаційного експерта (information expert)
  • GRASP: Зачеплення та зв'язність (coupling and cohesion)
  • GRASP: Чиста вигадка (pure fabrication)
  • GRASP: Посередник, стійкість до змін
  • Закон Деметри (LoD - Law of Demeter)
  • Генератори та асинхронні генератори
  • Ітератори та асинхронні ітератори

Модуль SE5 (з 17-19 років)

  • Принципи SOLID
  • GoF: Породжувальні шаблони (creational)
  • GoF: Структурні шаблони (structural)
  • GoF: Поведінкові шаблони (behavioral)
  • to be continued

Модуль SE6 (з 18-19 років)

  • Асинхронне та паралельне програмування
  • to be continued