Skip to content

Instantly share code, notes, and snippets.

@kobezzza
Last active January 26, 2023 09:11
Show Gist options
  • Save kobezzza/32633b8f68e20724e8804b9f64973230 to your computer and use it in GitHub Desktop.
Save kobezzza/32633b8f68e20724e8804b9f64973230 to your computer and use it in GitHub Desktop.
Описание курса

Длительность курса

Три месяца.

Цели курса

Формирование базы программирования и трансформация в крепкого Middle Frontend Developer.

Что получишь в конце

  • Избавишься от проблемы "чистого листа" при разработке приложения или библиотеки.
  • Поймешь чем отличается хорошая архитектура от плохой.
  • Начнешь осмысленно применять алгоритмы и структуры данных в своей работе.
  • Будешь прагматично подходить к выбору инструмента для решаемой задачи.
  • Готовый проект, который можно будет развивать дальше или использовать как портфолио.
  • А для самых старательный мои личные рекомендации в топовые IT компании страны.

Необходимый уровень разработчика для прохождения курса

Junior, Junior+, Middle.

Что вы должны знать и уметь

  1. Хорошо разбираться в синтаксисе и семантике JS (ES6+).
  2. Понимание объектной модели JS и браузера.
  3. Иметь представление об асинхронном программировании в JS хотя бы на базовом уровне.
  4. Уметь работать с GIT и Github на базовом уровне.

Что будет плюсом

  1. Опыт работы с TypeScript.
  2. Опыт работы с инструментами сборки, например, Webpack.

Концепция занятия

  1. Все занятия начинаются с формализации решаемой проблемы. Например, если разбираем ООП, то сначала поймём зачем этот ООП вообще придумали.
  2. Почти каждая лекция будет состоять из теории (проблема, обоснование, решение) и кода. Пропорции примерно 40% к 60% (т.е. кода будет больше).
  3. Длительность занятия ~2 часа.
  4. После каждого занятия будут даваться задачки для тренировки, но основная практика - это разработка учебного проекта.

Обратная связь

  1. Раз в две недели будем проводить живые уроки с разборами и ответами на вопросы.
  2. При разработке учебных проектов все поделятся на команды. Внутри команды будет свой Code-Review и свой team-lead (один из членов команды). Каждая команда будет "защищать" свой проект.
  3. Те, кто возьмет максимальный тариф, будут работать в команде со мной и получать еженедельную обратную связь.

Модули

Ядро

Чему научишься

  • Сформируешь базовое понимание о работе процессора и памяти.
  • Поймёшь разницу между асинхронным и многопоточным программированием.
  • Узнаешь о самых важных алгоритмах и структурах данных в программировании и начнешь их применять.

План

  1. Данные и типы данных. Типизация в языках программирования. Фундаментальные структуры данных: массив, связный список, стек, очередь.
  2. Процессор и память. Многозадачность и роль ОС. Сегменты памяти программы. Управление памятью.
  3. Важнейшие структуры данных: вектор, хеш-таблицы, деревья поиска.
  4. Строки. Кодовые таблицы и наборы символов. Кодировки. Графемы. Нормальная составная и разряженные формы.
  5. Поиск в строке. Регулярные выражения.
  6. Итераторы и паттерны их применения.
  7. Автоматы и генераторы.
  8. Обработка ошибок. Простые и контейнерные типы данных. Функторы и монады.
  9. Асинхронное программирование. Функции обратного вызова. Монадические контейнеры для асинхронного программирования.
  10. Асинхронные итераторы. Реактивные структуры данных.

Практика

Практика этого модуля основана на реализации своего проекта-библиотеки. Идея библиотеки берется из заранее подготовленного пула или можно придумать самостоятельно. Также, после почти каждого занятия будут даваться задачки на проработку и самостоятельное изучение.

Архитектура

Чему научишься

  • Узнаешь о разных парадигмах программирования.
  • Научишься эффективно применять объектно-ориентированное и функциональное программирование на практике.
  • Узнаешь об паттернах построения Frontend приложений.
  • Напишешь свой реальный и интересный проект.
  • Научишься работать в команде.

План

  1. Парадигмы программирования. Идиомы и паттерны. Модули и их метрики.
  2. ООП: базовые принципы и реализация в JS. Знакомство с TypeScript. Понятие интерфейса. ОО паттерны. Внедрение зависимостей: композиция и стратегия.
  3. Принципы SOLID. Перегрузка методов и функций. Внедрение зависимостей: посетители.
  4. Примеси, характеристики и декораторы. Паттерны создания объектов.
  5. Взаимодействие объектов. Событийная модель. События и реактивные структуры данных. Конвееры. Акторы.
  6. Архитектура Frontend приложения. MV* паттерны. Состояние приложения.
  7. View компонента. Декларативный и императивные подходы. JSX и шаблоны. Стратегии рендеринга и доступность.
  8. Компонент и внешние данные. Чистые компоненты. Взаимодействие компонентов. Обработка ошибок.
  9. Внедрение зависимостей. Сквозной функционал.
  10. Способы описания компонента: ОО и функциональные подходы. DSL. Выбор языка программирования для реализации.
  11. Макро-архитектура Frontend приложения. SPA. Микро-фронтенды. Знакомство с инструментами сборки.
  12. Тестирование компонентов и приложений.

Практика

Практика этого модуля основана на реализации своего проекта-приложения. Идея приложения берется из заранее подготовленного пула или можно придумать самостоятельно. В конце будет защита и отбор. Самые лучше проекты будут награждаться ;)

Поддержка

Если у тебя остались еще вопросы, то буду рада ответить на них. Просто напиши свой вопрос на почту daria.kobezzza@yandex.ru , Дарья Кобец.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment