Computer Science во Frontend [kobezzza] [Андрей Кобец]
ЦЕЛЬ КУРСА
Модуль 2. Инфраструктура
Чему научишься:
Модуль 3. Архитектура
Чему научишься:
ЦЕЛЬ КУРСА
- Формирование базы программирования
- Трансформация в крепкого Middle Frontend Developer
- Избавишься от проблемы "чистого листа" при разработке приложения или библиотеки
- Поймешь, чем отличается хорошая архитектура от плохой
- Начнешь осмысленно применять алгоритмы и структуры данных в своей работе
- Будешь прагматично подходить к выбору инструмента для решаемой задачи
- Создашь проект, который можно будет развивать дальше или использовать в портфолио
Модуль 1. Ядро
Чему научишься:
Чему научишься:
- Сформируешь базовое понимание о работе процессора и памяти
- Узнаешь о самых важных алгоритмах и структурах данных в программировании и начнешь их применять
- Освоишь техники работы с асинхронным и многопоточным кодом
- Познакомишься с WASM
Практика:
- Практика этого модуля основана на реализации своего проекта-библиотеки
- Идея библиотеки берется из заранее подготовленного пула или можно придумать самостоятельно
План лекций
- Кодирование информации. Данные, типы и структуры данных. Типизация в языках программирования.
- Процессор и память. Адресация памяти и разрядность процессора. Кэш-память. Классификация вычислительных систем.
- Фундаментальные структуры данных. Кортеж и структура. Массив и связный список.
- Абстрактные структуры данных. Стек и очередь. Очередь с приоритетом. Ассоциативный массив.
- Сегменты памяти программы. Многозадачность и роль ОС. Ручное и автоматическое управление памятью.
- Важнейшие структуры данных. Вектор и хеш-таблица.
- Графы. Обход узлов графа. Топологическая сортировка графа.
- Бинарный поиск. Деревья поиска. Бинарные и многопутевые деревья. Самобалансирующееся деревья поиска.
- Бинарное дерево на основе массива. Бинарная куча.
- Строки. Кодовые таблицы. ASCII и совместимые кодовые таблицы. UCS-2.
- Наборы символов и Юникод. Графемы. Нормальная составная и разряженные формы. Кодировки. UTF-16 и UTF-8.
- Алгоритмы поиска в строке. Конечные автоматы. Структура данных Бор.
- Грамматики. Регулярные выражения.
- Продвинутые регулярные выражения. Ретроспективные и опережающие проверки.
- Паттерн "Итератор". Итерируемые объекты. Рекурсивные итераторы. Ленивые вычисления.
- Продвинутые итераторы. Продьюсеры, модификаторы, агрегаторы и коллекторы.
- Автоматы и генераторы. Поточная обработка данных. Парсеры и парсерные комбинаторы.
- Асинхронное программирование. Функции обратного вызова. Паттерн "Источник событий".
- Ошибки и исключения в JS. Обработка ошибок в асинхронном программировании. Простые и контейнерные типы данных.
- Композиция контейнерных типов. Функторы, монады и моноиды.
- Каррирование и частичное применение функций. Аппликативные функторы.
- Promise API и Thenable объекты. Операторы async/await. Макро и микро таски.
- Асинхронные итераторы и генераторы. Реактивные структуры данных.
- Конкурентное программирование. Структуры данных RWLock, Семафор и Мьютекс.
- Параллельное вычисления в JS. Веб-воркеры. Структуры данных SharedBuffer и Atomics.
- Введение в WASM.
Модуль 2. Инфраструктура
Чему научишься:
- Получишь глубокие знания об организации модулей и пакетов в JS
- Познакомишься со способами сборки JS приложений и начнешь использовать Webpack
- Узнаешь о способах тестирования программных модулей
- Начнешь использовать Jest и Playwright
Практика:
- Практика этого модуля основана на домашних заданиях, которые будут после части лекций
План лекций
- Модули и пакеты в JS.
- Способы и системы сборки JS приложений.
- Введение в Webpack.
- Тестирование программных модулей. Способы автоматизации.
- Знакомство с Jest и Playwright.
Модуль 3. Архитектура
Чему научишься:
- Узнаешь о разных парадигмах программирования
- Научишься эффективно применять объектно-ориентированное и функциональное программирование на практике
- Узнаешь об паттернах построения Frontend приложений
- Напишешь свой реальный и интересный проект
Практика:
- Практика этого модуля основана на реализации своего проекта-приложения
План лекций
- Парадигмы программирования. Идиомы и паттерны. Выбор языка программирования.
- Модули и их метрики. Паттерны и антипаттерны организации модулей.
- Введение в ООП. Реализация ООП в разных ЯП. Понятие абстракции и реализации. Принципы SOLID.
- ООП в JS. Объекты-прототипы, функции конструкторы и ES6 классы. Паттерны создания объектов.
- Продвинутая работа с объектами в JS. Рефлексия и мета-программирование в JS.
- Знакомство с TypeScript. Введение в обобщенное программирование.
- ОО паттерны. Композиция и стратегия. Примеси и характеристики.
- Паттерн "Декоратор". Декораторы в JS/TS.
- Взаимодействие объектов. Событийная модель. Реактивное программирование.
- Паттерн "Посетитель". Посетители vs декораторы.
- Архитектура Frontend приложения. MV\* паттерны.
- Паттерны работы с состоянием компонента или приложения.
- Компонент и внешние данные. Чистые компоненты.
- View компонента. Декларативный и императивные подходы. JSX и шаблоны.
- Внедрение зависимостей. Разделение приложения на слои. Микрофронтенды.
- Сквозной функционал. Аспектно-ориентированное программирование.
- Способы описания компонента. DSL.
- Оптимизация Frontend приложений. Способы профилирования.
https://kobezzza.ru/