Товарищи инженеры, как и было обещано в анонсе, половина лекций (а это 51) уже доступны для просмотра на ютюбе и я продолжу их записывать в 2019 году. Часть из нужно будет перезаписать, потому, что в первых лекциях не самый лучший звук и потому, что очень простые темы у меня пока не очень хорошо получаются. Лучше вышли сложные и актуальные темы, которые мне и самому более интересно рассказывать. Я бы не сказал, что это курс для начинающих, скорее, это курс для тех, кто уже знает синтаксис. За это время поступило множество предложений, как улучшить способ подачи материала: делить на более короткие лекции, подготовить задачи для практического освоения, записывать семинары и ответы на вопросы студентов, добавить в программу разбор целого ряда спорных и холиварных тем. Но не все сразу, я и так посвящаю этому треть жизни.
Ниже привожу темы лекций со ссылками, сгруппированные по разделам. Следующие 50 тем уже есть и я скоро опубликую расписание лекций на 2019 год, но если кто хочет запросить тему, то предлагайте в комментариях.
Обзорные лекции
- Подход к изучению программирования (выступление на дне факультета Информатики КПИ)
- Карта специальности инженер-программист
Базовый курс (22 лекции)
- Базовый синтаксис JavaScript
- Базовый синтаксис JavaScript, продолжение
- Настройка среды: Node.js, npm, git, eslint
- Функции, лямбды, контексты, замыкания
- Массивы, объекты, классы, прототипы
- Композиция, каррирование, частичное применение
- Функции высшего порядка, колбеки, события
- Работа со строками, шаблонами и юникодом
- Измерение производительности кода и оптимизация
- Примеси, обертки, декораторы, мемоизация
- Коллекции, множества, хештаблицы
- Проекции и отображения наборов данных
- Структуры данных: списки, стек, очередь, дэк
- Сериализация и десериализация
- Использование Proxy и Symbol
- Итерирование, циклы и итераторы
- Чеининг функций и объектов, обработка ошибок
- Регулярные выражения и парсинг
- Фабрики и пулы объектов
- Типизированные массивы
- Шаблон Singleton (синглтон)
- Функциональные объекты, функторы и монады
Асинхронное программирование (9 лекций)
- Асинхронное программирование в Node.js
- Таймеры, таймауты, EventEmitter
- Асинхронные функции async, await, thenable, обработка ошибок
- Асинхронные адаптеры: promisify, callbackify, asyncify...
- Асинхронные коллекторы данных
- Асинхронное программирование на callback`ах
- Неблокирующее асинхронное итерирование
- Асинхронность с библиотекой async.js
- Асинхронность на промисах
Архитектура и парадигмы (7 лекций)
- Архитектурный подход к программированию
- Модули, слои, структура проекта, песочницы
- Инверсия управления и внедрение зависимостей
- Слои, связанность и связность кода
- Слой доступа к данным, курсор, транзакция
- Функциональное программирование
- Реактивное программирование
Лекции по Node.js (11 лекций)
- Node.js Введение в технологию
- Обзор встроенного Node.js API
- Клиент-сервер на Node.js TCP и UDP, DNS
- Работа с файлами, буферами и файловыми потоками
- Межпроцессовое взаимодействие в Node.js
- HTTP сервер на Node.js (routing, cluster, IP sticky)
- Консоль и командная строка
- Высоконагруженные распределенные приложения на Node.js
- WebSocket сервер на Node.js (электронные таблицы и чат)
- Наблюдение за файловой системой в Node.js
- Утечки памяти, сборка мусора и профилирование