- Автор: https://github.com/tshemsedinov
- Канал в телеграме: https://t.me/HowProgrammingWorks
- Группа (чат): https://t.me/Programming_IP9X
- Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Practice/SEF1.ru.md
- Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary
Объем материала: 36 лекций (из них 4 вводные лекции, 8 лекций по языку JS, 18 лекций по фундаментальным понятиям теории программирования, 6 лекций по инструментам и процессу разработки), 8 семинаров, 9 лабораторных работ, 47 репозиториев с примерами кода.
- Введение в программирование
- Абстракция, модель, алгоритм, программа, синтаксис, повторное использование
- Значение, идентификатор, переменная и константа, литерал, присвоение
- Типы данных, скалярные, ссылочные и структурные типы
- Оператор и выражение, блок кода, функция, цикл, условие
- Слайды: https://www.slideshare.net/tshemsedinov/1-168855278
- Введение в программирование, продолжение
- Процедуры и функции, стек и куча, коллекции, модули, компоненты, библиотеки
- Языки и парадигмы программирования, технологические стеки
- Среда разработки и отладка кода
- Семинар: Обсуждение плана и материалов курса
- Настройка среды: Node.js, npm, git, eslint
- Смотреть выборочно, что не понятно - пропускайте
- Задания: Exercises.ru.md
- Базовый синтаксис JavaScript
- Абстракции и их переиспользование: https://github.com/HowProgrammingWorks/Reusable
- Основные конструкции: https://github.com/HowProgrammingWorks/Cheatsheet
- Типы данных: https://github.com/HowProgrammingWorks/DataTypes
- Базовый синтаксис JavaScript, продолжение
- Семинар: Базовый синтаксис языка JavaScript
- Семинар: Автоматическая проверка лабораторных работ
- Функции, лямбды, контексты, замыкания в JavaScript
- Массивы, объекты, классы, прототипы в JavaScript
- Структуры данных: https://github.com/HowProgrammingWorks/DataStructures
- Итерирование: https://github.com/HowProgrammingWorks/Iteration
- Прототипы: https://github.com/HowProgrammingWorks/Prototype
- Языки программирования
- Семинар: JavaScript, ответы на вопросы
- Частичное применение и каррирование в JavaScript
- Функции высшего порядка, колбеки, события на JavaScript
- Функции высшего порядка: https://github.com/HowProgrammingWorks/HigherOrderFunction
- Функции обратного вызова: https://github.com/HowProgrammingWorks/Callbacks
- История развития языков программирования
- Парадигмы программирования
- Работа со строками, шаблонами и юникодом в JavaScript
- Примеры кода: https://github.com/HowProgrammingWorks/String
- Антипаттерны общие для всех парадигм
- Консоль и командная строка в JavaScript и Node.js
- Примеры кода: https://github.com/HowProgrammingWorks/CommandLine
- Чеининг функций и объектов, обработка ошибок в JavaScript
- Чеининг: https://github.com/HowProgrammingWorks/Chaining
- Обработка ошибок: https://github.com/HowProgrammingWorks/Errors
- Рекурсия: косвенная и хвостовая, стек, выход
- Примеры кода: https://github.com/HowProgrammingWorks/Recursion
- Итерирование, циклы и итераторы в JavaScript
- Примеры кода: https://github.com/HowProgrammingWorks/Iteration
- Антипаттерны процедурного программирования
- Семинар: Ответы на вопросы по курсу "Основы программирования"
- Таймеры, таймауты и EventEmitter
- Семинар: Выполнение лабораторных работ по курсу
- Массивы в JavaScript: методы Array
- Примеры кода: https://github.com/HowProgrammingWorks/Arrays
- Коллекции, множества, хеш таблицы в JavaScript
- Коллекции: https://github.com/HowProgrammingWorks/Collections
- Хеш таблицы: https://github.com/HowProgrammingWorks/Map
- Множества: https://github.com/HowProgrammingWorks/Set
- Code Review: как это и зачем
- Структуры данных: списки, стек, очередь, дэк в JavaScript
- Сериализация и десериализация в JavaScript и Node.js
- Примеры кода: https://github.com/HowProgrammingWorks/Serialization
- Рефакторинг: причины, цели, техники и процесс
- Примеры кода: https://github.com/HowProgrammingWorks/Refactoring
- Пример проекта: https://github.com/tshemsedinov/node-mysql-utilities
- Семинар: Выбор направления в программировании
- Proxy и Symbol в JavaScript
- Регулярные выражения и парсинг в JavaScript
- Примеры кода: https://github.com/HowProgrammingWorks/RegExp
- Композиция: pipe, compose
- Примеры кода: https://github.com/HowProgrammingWorks/Composition
- Примеси: mixin, extend, Object.assign, class λ-mixin
- Тема class λ-mixin из этой лекции не обязательна для модуля SEF1
- Примеры кода: https://github.com/HowProgrammingWorks/Mixin
- Старая версия лекции: https://youtu.be/2h9syXN5wO0
- Прототипное программирование и прототипное наследование
- Мемоизация: memoize
- Примеры кода: https://github.com/HowProgrammingWorks/Memoization
- Старая версия лекции: https://youtu.be/2h9syXN5wO0
- Фабрики и пулы объектов в JavaScript, factorify, poolify
- Фабрики: https://github.com/HowProgrammingWorks/Factory
- Пулы объектов: https://github.com/HowProgrammingWorks/Pool
- Функции-обертки: wrappers
- Примеры кода: https://github.com/HowProgrammingWorks/Wrapper
- Старая версия лекции: https://youtu.be/2h9syXN5wO0
- Типизированные массивы в JavaScript
- Примеры кода: https://github.com/HowProgrammingWorks/TypedArrays
- Новое в JavaScript
- Не все в темы обязательны для модуля SEF1, что поймете, то и хорошо
- Слайды: https://www.slideshare.net/tshemsedinov/javascript-esnext-ecmascript-2020-es11-es10-es9-es8-es7-es6-es2020-es2019
- Примеры кода: https://github.com/HowProgrammingWorks/ESNext
- Объектно-ориентированное программирование
- Структуры (struct) или записи (record)
- Карта специальности инженер-программист
- Подход к изучению программирования
- Списки: односвязные, двусвязные, циклические, развернутые
- Графы и запросы к графовым структурам данных
- Примеры кода: https://github.com/HowProgrammingWorks/Graph
- Проекции и отображения наборов данных в JavaScript
- Примеры кода: https://github.com/HowProgrammingWorks/Projection
- Мономорфный и полиморфный код, инлайн-кэш, скрытые классы
- Примеры кода: https://github.com/HowProgrammingWorks/Monomorphism
- Функциональное программирование
- Смотрите обзорно, это не обязательная лекция, попробуйте уловить суть парадигмы
- Примеры кода: https://github.com/HowProgrammingWorks/FunctionalProgramming
- Реактивное программирование
- Работа с файлами, буферами и файловыми потоками в Node.js
- Оценка сложности алгоритмов
- Измерение производительности кода и оптимизация
- Примеры кода: https://github.com/HowProgrammingWorks/Benchmark
- Асинхронное программирование на callback`ах
- Асинхронное программирование на promise`ах
- Асинхронные функции, async/await, thenable, обработка ошибок
- Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait
- Неизменяемые структуры данных (immutable)
- Автоматное программирование: конечные автоматы (машины состояний)
- Антипаттерны объектно-ориентированного программирования
- Шаблон Singleton (синглтон) в JavaScript
- Примеры кода: https://github.com/HowProgrammingWorks/Singleton
- Функциональные объекты, функторы и монады в JavaScript
- Примеры кода: https://github.com/HowProgrammingWorks/Functor
- Генераторы и асинхронные генераторы
- Генераторы: https://github.com/HowProgrammingWorks/Generator
- Асинхронные генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator
- Итераторы и асинхронные итераторы
- Итераторы: https://github.com/HowProgrammingWorks/Iterator
- Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator
- Перечислимый тип (enum) в JavaScript и TypeScript
- Примеры кода: https://github.com/HowProgrammingWorks/Enum
- Дженерики и обобщенное программирование
- Примеры кода: https://github.com/HowProgrammingWorks/Generics
- Тестирование: юниттесты с примерами
- Тестирование: https://github.com/HowProgrammingWorks/Testing
- Юниттесты: https://github.com/HowProgrammingWorks/Unittesting
- Тестирование: системное и интеграционное тестирование
- Примеры кода: https://github.com/HowProgrammingWorks/Unittesting
- Интроспекция и рефлексия в JavaScript
- Интроспекция: https://github.com/HowProgrammingWorks/Introspection
- Рефлекция: https://github.com/HowProgrammingWorks/Reflect
- Почему хорошее ИТ-образование невостребовано рыночком