|
| 1 | +# Основы программирования 2022-2023 |
| 2 | + |
| 3 | +Модули [SEF1](#%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C-sef1) и [SEF2](#%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C-sef2) |
| 4 | + |
| 5 | +## Ссылки |
| 6 | + |
| 7 | +- Автор: https://github.com/tshemsedinov |
| 8 | +- Канал в телеграме: https://t.me/HowProgrammingWorks |
| 9 | +- Группа (чат): https://t.me/Programming_IP9X |
| 10 | +- Задачи по курсу: https://github.com/HowProgrammingWorks/Index/blob/master/Practice/SEF1.ru.md |
| 11 | +- Словарь терминов: https://github.com/HowProgrammingWorks/Dictionary |
| 12 | + |
| 13 | +## Модуль SEF1 |
| 14 | + |
| 15 | +Объем материала: 36 лекций (из них 4 вводные лекции, 8 лекций по языку JS, |
| 16 | +18 лекций по фундаментальным понятиям теории программирования, 6 лекций по |
| 17 | +инструментам и процессу разработки), 8 семинаров, 9 лабораторных работ, |
| 18 | +47 репозиториев с примерами кода. |
| 19 | + |
| 20 | +### 1 неделя |
| 21 | + |
| 22 | +- [Введение в программирование](https://youtu.be/5Gt61EX6HZ4) |
| 23 | + - Абстракция, модель, алгоритм, программа, синтаксис, повторное использование |
| 24 | + - Значение, идентификатор, переменная и константа, литерал, присвоение |
| 25 | + - Типы данных, скалярные, ссылочные и структурные типы |
| 26 | + - Оператор и выражение, блок кода, функция, цикл, условие |
| 27 | + - Слайды: https://www.slideshare.net/tshemsedinov/1-168855278 |
| 28 | +- [Введение в программирование, продолжение](https://youtu.be/PzlLXQ3RaDs) |
| 29 | + - Процедуры и функции, стек и куча, коллекции, модули, компоненты, библиотеки |
| 30 | + - Языки и парадигмы программирования, технологические стеки |
| 31 | + - Среда разработки и отладка кода |
| 32 | +- Семинар: [Обсуждение плана и материалов курса](https://youtu.be/bQMTbRWrteU) |
| 33 | +- [Настройка среды: Node.js, npm, git, eslint](https://youtu.be/hSyA7tcNaCE) |
| 34 | + - Смотреть выборочно, что не понятно - пропускайте |
| 35 | + - Задания: [Exercises.ru.md](https://github.com/HowProgrammingWorks/Introduction/blob/master/Exercises.ru.md) |
| 36 | + |
| 37 | +### 2 неделя |
| 38 | + |
| 39 | +- [Базовый синтаксис JavaScript](https://youtu.be/xJn3k1f4BiM) |
| 40 | + - Абстракции и их переиспользование: https://github.com/HowProgrammingWorks/Reusable |
| 41 | + - Основные конструкции: https://github.com/HowProgrammingWorks/Cheatsheet |
| 42 | + - Типы данных: https://github.com/HowProgrammingWorks/DataTypes |
| 43 | +- [Базовый синтаксис JavaScript, продолжение](https://youtu.be/qa-XleqA0JU) |
| 44 | + - Типы данных: https://github.com/HowProgrammingWorks/DataTypes |
| 45 | + - Условия: https://github.com/HowProgrammingWorks/Conditional |
| 46 | +- Семинар: [Базовый синтаксис языка JavaScript](https://youtu.be/PGqjTXQe_qw) |
| 47 | +- Семинар: [Автоматическая проверка лабораторных работ](https://youtu.be/M4KpG0LEAyA) |
| 48 | + |
| 49 | +### 3 неделя |
| 50 | + |
| 51 | +- [Функции, лямбды, контексты, замыкания в JavaScript](https://youtu.be/pn5myCmpV2U) |
| 52 | + - Функции: https://github.com/HowProgrammingWorks/Function |
| 53 | + - Замыкания: https://github.com/HowProgrammingWorks/Closure |
| 54 | +- [Массивы, объекты, классы, прототипы в JavaScript](https://youtu.be/VBMGnAPfmsY) |
| 55 | + - Структуры данных: https://github.com/HowProgrammingWorks/DataStructures |
| 56 | + - Итерирование: https://github.com/HowProgrammingWorks/Iteration |
| 57 | + - Прототипы: https://github.com/HowProgrammingWorks/Prototype |
| 58 | +- [Языки программирования](https://youtu.be/enHA1CRkJe0) |
| 59 | +- Семинар: [JavaScript, ответы на вопросы](https://youtu.be/wqkQ6eslyzY) |
| 60 | + |
| 61 | +### 4 неделя |
| 62 | + |
| 63 | +- [Частичное применение и каррирование в JavaScript](https://youtu.be/ND8KQ5xjk7o) |
| 64 | + - Примеры кода: https://github.com/HowProgrammingWorks/PartialApplication |
| 65 | +- [Функции высшего порядка, колбеки, события на JavaScript](https://youtu.be/1vqATwbGHnc) |
| 66 | + - Функции высшего порядка: https://github.com/HowProgrammingWorks/HigherOrderFunction |
| 67 | + - Функции обратного вызова: https://github.com/HowProgrammingWorks/Callbacks |
| 68 | + |
| 69 | +### 5 неделя |
| 70 | + |
| 71 | +- [История развития языков программирования](https://youtu.be/qqz0VSaNxuw) |
| 72 | + - Слайды: https://www.slideshare.net/tshemsedinov/programming-languages-comparison-history-future |
| 73 | +- [Парадигмы программирования](https://youtu.be/Yk1sxLVHfjs) |
| 74 | +- [Работа со строками, шаблонами и юникодом в JavaScript](https://youtu.be/GcopcHQkA8M) |
| 75 | + - Примеры кода: https://github.com/HowProgrammingWorks/String |
| 76 | + |
| 77 | +### 6 неделя |
| 78 | + |
| 79 | +- [Антипаттерны общие для всех парадигм](https://youtu.be/NMUsUiFokr4) |
| 80 | + - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/01-Common |
| 81 | +- [Консоль и командная строка в JavaScript и Node.js](https://youtu.be/5aSZyKi5BmE) |
| 82 | + - Примеры кода: https://github.com/HowProgrammingWorks/CommandLine |
| 83 | + |
| 84 | +### 7 неделя |
| 85 | + |
| 86 | +- [Чеининг функций и объектов, обработка ошибок в JavaScript](https://youtu.be/PfuEfIiLX34) |
| 87 | + - Чеининг: https://github.com/HowProgrammingWorks/Chaining |
| 88 | + - Обработка ошибок: https://github.com/HowProgrammingWorks/Errors |
| 89 | +- [Рекурсия: косвенная и хвостовая, стек, выход](https://youtu.be/W2skCjIgVKE) |
| 90 | + - Примеры кода: https://github.com/HowProgrammingWorks/Recursion |
| 91 | + |
| 92 | +### 8 неделя |
| 93 | + |
| 94 | +- [Итерирование, циклы и итераторы в JavaScript](https://youtu.be/lq3b5_UGJas) |
| 95 | + - Примеры кода: https://github.com/HowProgrammingWorks/Iteration |
| 96 | +- [Антипаттерны процедурного программирования](https://youtu.be/cTv7V22mkwE) |
| 97 | + - Примеры кода: https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/02-Procedural |
| 98 | + |
| 99 | +### 9 неделя |
| 100 | + |
| 101 | +- Семинар: [Ответы на вопросы по курсу "Основы программирования"](https://youtu.be/TY6nDW7aYys) |
| 102 | +- [Таймеры, таймауты и EventEmitter](https://youtu.be/LK2jveAnRNg) |
| 103 | + - Таймеры: https://github.com/HowProgrammingWorks/Timers |
| 104 | + - EventEmitter: https://github.com/HowProgrammingWorks/EventEmitter |
| 105 | + - События: https://github.com/metarhia/common/blob/master/lib/events.js |
| 106 | +- Семинар: [Выполнение лабораторных работ по курсу](https://youtu.be/ikUOyFPzdJw) |
| 107 | + |
| 108 | +### 10 неделя |
| 109 | + |
| 110 | +- [Массивы в JavaScript: методы Array](https://youtu.be/D1kfYBkX9FE) |
| 111 | + - Примеры кода: https://github.com/HowProgrammingWorks/Arrays |
| 112 | +- [Коллекции, множества, хеш таблицы в JavaScript](https://youtu.be/hN0wsq5LNOc) |
| 113 | + - Коллекции: https://github.com/HowProgrammingWorks/Collections |
| 114 | + - Хеш таблицы: https://github.com/HowProgrammingWorks/Map |
| 115 | + - Множества: https://github.com/HowProgrammingWorks/Set |
| 116 | + |
| 117 | +### 11 неделя |
| 118 | + |
| 119 | +- [Code Review: как это и зачем](https://youtu.be/EKL6NiIQ6ZU) |
| 120 | + - Примеры: https://github.com/HowProgrammingWorks/CodeReview |
| 121 | + - Семинар: [Code Review, ответы на вопросы](https://youtu.be/AgH4OAKbmkM) |
| 122 | +- [Структуры данных: списки, стек, очередь, дэк в JavaScript](https://youtu.be/9KvA4hDDSjk) |
| 123 | + - Списки: https://github.com/HowProgrammingWorks/LinkedList |
| 124 | + - Очереди: https://github.com/HowProgrammingWorks/Dequeue |
| 125 | + |
| 126 | +### 12 неделя |
| 127 | + |
| 128 | +- [Сериализация и десериализация в JavaScript и Node.js](https://youtu.be/GtKPniOEzh8) |
| 129 | + - Примеры кода: https://github.com/HowProgrammingWorks/Serialization |
| 130 | +- [Рефакторинг: причины, цели, техники и процесс](https://youtu.be/z73wmpdweQ4) |
| 131 | + - Примеры кода: https://github.com/HowProgrammingWorks/Refactoring |
| 132 | + - Пример проекта: https://github.com/tshemsedinov/node-mysql-utilities |
| 133 | +- Семинар: [Выбор направления в программировании](https://youtu.be/1gL627DQF4A) |
| 134 | + |
| 135 | +### 13 неделя |
| 136 | + |
| 137 | +- [Proxy и Symbol в JavaScript](https://youtu.be/UjZjSDyi9AM) |
| 138 | + - Прокси: https://github.com/HowProgrammingWorks/Proxy |
| 139 | + - Символы: https://github.com/HowProgrammingWorks/Symbol |
| 140 | +- [Регулярные выражения и парсинг в JavaScript](https://youtu.be/-ef2E0ozxao) |
| 141 | + - Примеры кода: https://github.com/HowProgrammingWorks/RegExp |
| 142 | + |
| 143 | +### 14 неделя |
| 144 | + |
| 145 | +- [Композиция: pipe, compose](https://youtu.be/xS9FicVrOTI) |
| 146 | + - Примеры кода: https://github.com/HowProgrammingWorks/Composition |
| 147 | +- [Примеси: mixin, extend, Object.assign, class λ-mixin](https://youtu.be/NZMrJ2adEyY) |
| 148 | + - Тема class λ-mixin из этой лекции не обязательна для модуля SEF1 |
| 149 | + - Примеры кода: https://github.com/HowProgrammingWorks/Mixin |
| 150 | + - Старая версия лекции: https://youtu.be/2h9syXN5wO0 |
| 151 | + |
| 152 | +### 15 неделя |
| 153 | + |
| 154 | +- [Прототипное программирование и прототипное наследование](https://youtu.be/SzaXTW2qcJE) |
| 155 | + - Примеры кода: https://github.com/HowProgrammingWorks/PrototypeChain |
| 156 | + - Слайды: https://www.slideshare.net/tshemsedinov/prototype-programming-in-javascript |
| 157 | +- [Мемоизация: memoize](https://youtu.be/H6S8QJo2Qxg) |
| 158 | + - Примеры кода: https://github.com/HowProgrammingWorks/Memoization |
| 159 | + - Старая версия лекции: https://youtu.be/2h9syXN5wO0 |
| 160 | + |
| 161 | +### 16 неделя |
| 162 | + |
| 163 | +- [Фабрики и пулы объектов в JavaScript, factorify, poolify](https://youtu.be/Ax_mSvadFp8) |
| 164 | + - Фабрики: https://github.com/HowProgrammingWorks/Factory |
| 165 | + - Пулы объектов: https://github.com/HowProgrammingWorks/Pool |
| 166 | +- [Функции-обертки: wrappers](https://youtu.be/En7pWi2fSzs) |
| 167 | + - Примеры кода: https://github.com/HowProgrammingWorks/Wrapper |
| 168 | + - Старая версия лекции: https://youtu.be/2h9syXN5wO0 |
| 169 | + |
| 170 | +### 17 неделя |
| 171 | + |
| 172 | +- [Типизированные массивы в JavaScript](https://youtu.be/tTNcqxbxhfY) |
| 173 | + - Примеры кода: https://github.com/HowProgrammingWorks/TypedArrays |
| 174 | +- [Новое в JavaScript](https://youtu.be/fUjHLj8bq_Y) |
| 175 | + - Не все в темы обязательны для модуля SEF1, что поймете, то и хорошо |
| 176 | + - Слайды: https://www.slideshare.net/tshemsedinov/javascript-esnext-ecmascript-2020-es11-es10-es9-es8-es7-es6-es2020-es2019 |
| 177 | + - Примеры кода: https://github.com/HowProgrammingWorks/ESNext |
| 178 | + |
| 179 | +## Модуль SEF2 |
| 180 | + |
| 181 | +### 18 неделя |
| 182 | + |
| 183 | +- [Объектно-ориентированное программирование](https://youtu.be/r4ReQlVtfgQ) |
| 184 | +- [Структуры (struct) или записи (record)](https://youtu.be/Wb7o_kK4aH4) |
| 185 | +- [Карта специальности инженер-программист](https://youtu.be/SE5aXH-yf0I) |
| 186 | + |
| 187 | +### 19 неделя |
| 188 | + |
| 189 | +- [Подход к изучению программирования](https://youtu.be/zMU4ir10DMg) |
| 190 | +- Списки: односвязные, двусвязные, циклические, развернутые |
| 191 | +- [Графы и запросы к графовым структурам данных](https://youtu.be/a0W0T8Yqw3s) |
| 192 | + - Примеры кода: https://github.com/HowProgrammingWorks/Graph |
| 193 | + |
| 194 | +### 20 неделя |
| 195 | + |
| 196 | +- [Проекции и отображения наборов данных в JavaScript](https://youtu.be/lwJCq9inky8) |
| 197 | + - Примеры кода: https://github.com/HowProgrammingWorks/Projection |
| 198 | +- [Мономорфный и полиморфный код, инлайн-кэш, скрытые классы](https://youtu.be/9JUY3prnCQ4) |
| 199 | + - Примеры кода: https://github.com/HowProgrammingWorks/Monomorphism |
| 200 | + |
| 201 | +### 21 неделя |
| 202 | + |
| 203 | +- [Функциональное программирование](https://youtu.be/0JxSs_GcvbQ) |
| 204 | + - Смотрите обзорно, это не обязательная лекция, попробуйте уловить суть парадигмы |
| 205 | + - Примеры кода: https://github.com/HowProgrammingWorks/FunctionalProgramming |
| 206 | +- [Реактивное программирование](https://youtu.be/7MH8-qQc-48) |
| 207 | + - Примеры кода: https://github.com/HowProgrammingWorks/ReactiveProgramming |
| 208 | + |
| 209 | +### 22 неделя |
| 210 | + |
| 211 | +- [Работа с файлами, буферами и файловыми потоками в Node.js](https://youtu.be/eQGBS15vUac) |
| 212 | + - Файлы: https://github.com/HowProgrammingWorks/Files |
| 213 | + - Потоки: https://github.com/HowProgrammingWorks/Streams |
| 214 | + - Буферы: https://github.com/HowProgrammingWorks/Buffers |
| 215 | +- Оценка сложности алгоритмов |
| 216 | +- [Измерение производительности кода и оптимизация](https://youtu.be/sanq2X7Re8o) |
| 217 | + - Примеры кода: https://github.com/HowProgrammingWorks/Benchmark |
| 218 | + |
| 219 | +### 23 неделя |
| 220 | + |
| 221 | +- [Асинхронное программирование на callback`ах](https://youtu.be/z8Hg6zgi3yQ) |
| 222 | +- [Асинхронное программирование на promise`ах](https://youtu.be/RMl4r6s1Y8M) |
| 223 | + - Примеры кода: https://github.com/HowProgrammingWorks/AsynchronousProgramming |
| 224 | +- [Асинхронные функции, async/await, thenable, обработка ошибок](https://youtu.be/Jdf_tZuJbHI) |
| 225 | + - Примеры кода: https://github.com/HowProgrammingWorks/AsyncAwait |
| 226 | + |
| 227 | +### 24 неделя |
| 228 | + |
| 229 | +- Неизменяемые структуры данных (immutable) |
| 230 | +- Автоматное программирование: конечные автоматы (машины состояний) |
| 231 | + |
| 232 | +### 25 неделя |
| 233 | + |
| 234 | +- [Антипаттерны объектно-ориентированного программирования](https://youtu.be/9d5TG1VsLeU) |
| 235 | + - https://github.com/HowProgrammingWorks/Antipatterns/tree/master/JavaScript/03-OOP |
| 236 | +- [Шаблон Singleton (синглтон) в JavaScript](https://youtu.be/qdJ5yikZnfE) |
| 237 | + - Примеры кода: https://github.com/HowProgrammingWorks/Singleton |
| 238 | +- [Функциональные объекты, функторы и монады в JavaScript](https://youtu.be/3Z7f0Gi8pxw) |
| 239 | + - Примеры кода: https://github.com/HowProgrammingWorks/Functor |
| 240 | + |
| 241 | +### 26 неделя |
| 242 | + |
| 243 | +- [Генераторы и асинхронные генераторы](https://youtu.be/kvNm9D32s8s) |
| 244 | + - Генераторы: https://github.com/HowProgrammingWorks/Generator |
| 245 | + - Асинхронные генераторы: https://github.com/HowProgrammingWorks/AsyncGenerator |
| 246 | +- [Итераторы и асинхронные итераторы](https://youtu.be/rBGFlWpVpGs) |
| 247 | + - Итераторы: https://github.com/HowProgrammingWorks/Iterator |
| 248 | + - Асинхронные итераторы: https://github.com/HowProgrammingWorks/AsyncIterator |
| 249 | + |
| 250 | +### 27 неделя |
| 251 | + |
| 252 | +- [Перечислимый тип (enum) в JavaScript и TypeScript](https://youtu.be/BXiKebOIAGI) |
| 253 | + - Примеры кода: https://github.com/HowProgrammingWorks/Enum |
| 254 | +- [Дженерики и обобщенное программирование](https://youtu.be/r6W2z3DQhoI) |
| 255 | + - Примеры кода: https://github.com/HowProgrammingWorks/Generics |
| 256 | + |
| 257 | +### 28 неделя |
| 258 | + |
| 259 | +- [Тестирование: юниттесты с примерами](https://youtu.be/CszugIag2TA) |
| 260 | + - Тестирование: https://github.com/HowProgrammingWorks/Testing |
| 261 | + - Юниттесты: https://github.com/HowProgrammingWorks/Unittesting |
| 262 | +- [Тестирование: системное и интеграционное тестирование](https://youtu.be/OuKu_6H_6gE) |
| 263 | + - Примеры кода: https://github.com/HowProgrammingWorks/Unittesting |
| 264 | + |
| 265 | +### 29 неделя |
| 266 | + |
| 267 | +- [Интроспекция и рефлексия в JavaScript](https://youtu.be/yvW1PjUVeM0) |
| 268 | + - Интроспекция: https://github.com/HowProgrammingWorks/Introspection |
| 269 | + - Рефлекция: https://github.com/HowProgrammingWorks/Reflect |
| 270 | +- [Почему хорошее ИТ-образование невостребовано рыночком](https://youtu.be/nvIJE6xMpiI) |
0 commit comments