Skip to content

Latest commit

 

History

History
94 lines (80 loc) · 5.42 KB

Software-ru.md

File metadata and controls

94 lines (80 loc) · 5.42 KB

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

Модуль SE0 (с 10-13 лет)

  • Значение и тип данных
  • Идентификаторы: переменная и константа, аргумент и параметр
  • Литерал, выражение, оператор
  • Блок кода, цикл, условие
  • Процедура и функция
  • Модули, компоненты, библиотеки
  • Языки и парадигмы программирования
  • Технологические стеки
  • Отладка, обработка ошибок, линтеры, трансляторы и компиляторы
  • Системы контроля версий и пакетные менеджеры, git
  • Массивы и объекты
  • Работа со строками

Модуль SE1 (с 12-15 лет)

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

Модуль SE2 (с 13-16 лет)

  • Контексты и замыкания
  • Частичное применение и каррирование, функции высшего порядка, колбеки
  • Чеининг функций и объектов
  • Рекурсия: косвенная и хвостовая, стек, выход
  • Композиция: pipe, compoSE
  • Функции-обертки, мемоизация
  • Функции-фабрики и пулы объектов
  • Классы, прототипное программирование и наследование
  • Примеси и их опасность: mixin, extend, Object.assign
  • Списки: односвязные, двусвязные, циклические, развернутые
  • Стек, очередь, дэк, графые структуры

Модуль SE3 (с 15-17 лет)

  • Обзор парадигмы: Объектно-ориентированное программирование
  • Принципы: абстрагирование, инкапсуляция, наследование, полиморфизм
  • Сокрытие в ООП и особенности на JavaScript
  • Интерфейсы vs наследование в ООП
  • Ассоциация, агрегация и композиция объектов
  • Антипаттерны объектно-ориентированного программирования
  • Дженерики и обобщенное программирование
  • Обзор парадигмы: Функциональное программирование
  • Функциональные объекты, функторы и монады
  • Обзор парадигмы: Реактивное программирование
  • Обзор парадигмы: Автоматное программирование
  • Асинхронное программирование на 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