ТП весна 2027 Продвинутый: различия между версиями

Материал из Public ATP Wiki
Перейти к навигации Перейти к поиску
Отбор
update
 
(не показаны 4 промежуточные версии этого же участника)
Строка 4: Строка 4:


= Описание курса =
= Описание курса =
Курс посвящен пользовательской стороне Linux, а также ряду популярных инструментов разработки. Продвинутый поток фокусируется на глубоком погружении в технические аспекты и детали реализации инструментов. В рамках курса будут изучены как сами инструменты, так и устроство некоторых из них (например, внутреннее устройство и принципы работы git, реализация docker средствами ядра Linux, общий принцип работы интерпретаторов командной оболочки и др.)
Курс посвящен пользовательской стороне Linux, а также ряду популярных инструментов разработки. Продвинутый поток фокусируется на глубоком погружении в технические аспекты и детали реализации инструментов. В рамках курса будут изучены как сами инструменты, так и устроство некоторых из них (например, внутреннее устройство и принципы работы Git, реализация Docker средствами ядра Linux, общий принцип работы интерпретаторов командной оболочки и др.)


<b>Важно!</b> Курс <b>не</b> предусматривает <i>какого-либо использования ИИ (не рекоммендуется даже поиск информации)</i> и использование ИИ-инструментов карается вплоть до дисциплинарных взысканий. Одним из результатов курса является умение верифицировать на высоком уровне результаты генерации кода с помощью ИИ, однако получить такой навык, используя ИИ нельзя.
<b>Важно!</b> Курс <b>не</b> предусматривает <i>какого-либо использования ИИ (не рекомендуется даже поиск информации)</i> и использование ИИ-инструментов карается вплоть до дисциплинарных взысканий. Одним из результатов курса является умение верифицировать на высоком уровне результаты генерации кода с помощью ИИ, однако получить такой навык, используя ИИ нельзя.


Курс досточно объемный, интенсивный и для закрытия на высокую оценку требует много потраченного времени. Домашние задания будут публиковаться каждую неделю.
Курс досточно объемный, интенсивный и для закрытия на высокую оценку потребуется потратить много времени. Домашние задания будут публиковаться каждую неделю. Помимо них будут устные сдачи по блокам курса в формате тех собесов: теоретические вопросы, решение различных кейсов, лайвкодинг.
 
Обратите внимание, что курс не затрагивает вопросов архитектуры и проектирования ПО, управления процессами. Мы будем затрагивать исключительно технические аспекты устройства и использования компьютера, ОС и инструментов разработки.
 
Перед регистрацией курса просим просмотреть страницу курса: материалы прошлых лет, политики курса. Если вы уже определились, что будете заниматься только математикой/физикой/аналитикой, то высока вероятность, что вам курс не зайдет, а времени придется потратить много даже на уд3. Поэтому давайте уважать время друг друга и выбирать продвинутый поток осмысленно. Мы со своей стороны постараемся подобрать хороший ассистентов, готовых потратить на вас достаточно своего времени. Ожидается, что курс наиболее подходит тем, кто планирует связать свою карьеру с программной инженерией (осмысленной: если вы планируете быть <i>"слоп-машиной"</i>, то курс также будет бессмысленным) и хочет прокачать хард-скиллы.
 
= Пререквизиты курса =
; Закрытый хотя бы на хор курс С++
: Продвинутый поток продолжает изучать экосистему С/С++, а также использует их механизмы для изучения ОС. Без хороших знаний первого семестра пройти курс будет достаточно сложно.
 
; Знание основных структур данных
: Мы не ожиданием умения ''"вслепую написать RBT дерево"'', однако ждем, что вы понимаете общие принципы работы основных структур данных из 1го семестра и можете их сравнивать. Например, ожидается понимание различий AVL, RBT и B деревьев.
 
; Наличие Linux платформы
: Так как курс про Linux и его инструменты, то без него (или mac OS) курс пройти будет невозможно.
 
; Умение и готовность самостоятельно искать информацию
: Домашние задания специально продуманы так, чтобы вы сталкивались с различными ошибками и нестандартными ситуациями. Мы ожидаем, что вы готовы гуглить ошибки, читать man страницы, stackoverflow и другие linux форумы. <i>Использование ИИ для разрешения ошибок максимально не приветствуется, а для решения задач вообще запрещается.</i>
 
= Установка Linux системы =
Требуется только если у вас уже нет ни Linux, ни mac OS.
 
''Если вы впервые работаете с Linux, то советуем выбрали либо Ubuntu, либо Fedora.'' Ubuntu -- более Windows-like система с большим числом гайдов в интернете, однако потребляет много ресурсов. Fedora -- более дружелюбная по потреблению ресурсов система, также позволяет выбрать графическое окружение (KDE или GNOME), однако уже дальше от Windows по дизайну и чуть меньше гайдов, преимущественно на английском языке.
 
== Oracle VM Box ==
Подойдет людям с 6+ ядрами процессора, 16ГБ+ оперативной памяти и 256ГБ+ жесткого диска (!= нельзя поставить иначе, просто будут часто фриззы в системе). Причем свободного места на диске должно быть хотя бы 64ГБ. Позволяет иметь полноценный Linux, однако придется чуть заморочиться. При работе с ВМ на хосте лучше не запускать ресурсо-требовальных приложений (например, несколько окон Chrome) -- тут уже ориентируйтесь на объем вашей оперативной памяти.
 
Скачайте образ диска ОС (<code>.iso</code>-файл):
* [https://dl.fedoraproject.org/pub/fedora/linux/releases/43/Workstation/x86_64/iso Fedora 43], 44 версия слишком свежая, пока лучше не ставить
* [https://ubuntu.com/download/desktop Ubuntu 2026], не устанавливайте нечетные версии, можно альтернативно 24, более старые не стоит.
 
Устновите [https://www.virtualbox.org/wiki/Downloads Oracle VM Box] и создайте виртуальную машину по следующим гайдам:
* [https://sergiolearns.com/en/install-fedora-on-virtualbox Fedora]
* [https://brb.nci.nih.gov/seqtools/installUbuntu.html Ubuntu]
 
Рекомендуемые параметры ВМ:
* Оперативная память
** Fedora: 6ГБ+, оптимально 8ГБ+
** Ubuntu: 8ГБ+, оптимально 10ГБ+
* Диск
** Тип: VDI, динамически расширяемый
** Объем: 64ГБ+, должны уложиться в 128ГБ
* Минимум 2 ядра, а так лучше 4+ ядер (больше половины лучше не отдавать)
 
Крайне советуем сразу настроить возможность копировать данные из хоста в ВМ и обратно. Дополнительно полезно создать разделяемую папку, чтобы перекидывать файлы туда-сюда.
 
== Dual boot ==
Подойдет тем, кто имеет 512ГБ+ жесткого диска (оптимально 1ТБ+). Позволяет иметь две независимые системы на одном устройстве, однако самый сложный процесс настройки из всех вариантов. Здесь уже лучше найти видео-гайды в ютубе по тому, как настроить для вашей версии Windows и выбранной ОС.
 
== WSL ==
Подойдет всем у кого стоит Windows, поставит почти что Linux (все же WSL -- не до конца полноценный Linux и на курсе мы это увидим, с дз этого курса проблем не будет, но в будущем могут быть приколы, если начнете заниматься низкоуровневым программированием) причем будет возможность из Linux взаимодействовать с файлами в Windows.
 
Установите WSL 2 по [https://learn.microsoft.com/ru-ru/windows/wsl/install официальному гайду]. Рекоммендации по дистрибутиву сохраняются.


= Система оценивания =
= Система оценивания =
Строка 17: Строка 69:


Итоговый зачет проводится на зачетной неделе и содержит базовые вопросы по темам курса ''aka теормин''.
Итоговый зачет проводится на зачетной неделе и содержит базовые вопросы по темам курса ''aka теормин''.
Также для положительного (не пересдача) закрытия курса потребуется набрать в сумме ненулевое число баллов за домашки по каждому из блоков курса.


= Программа курса =
= Программа курса =
''TBD..''
Курс представляет из себя 30 пар, по формату являющихся чем-то средним между лекцей и семинаром. Презентации с пар и часть материалов курса будут на английском языке для более эффективного погружения в среду.
 
Основная практика вынесена на домашние задания и взаимодействие с ассистентами. Мы не штрафуем за непройденное ревью с первого раза: смысл ревью -- довести ваше решение до идеала. Пока ревью не пройдено баллы за задачу не учитываются. В среднем по опыту необходимо пройти 3-5 итераций ревью, чтобы зачли задачу. Без получения ненулевого балла за домашки по каждому блоку закрыть курс не получится, поэтому приготовьтесь
 
== Основные темы курса ==
* Linux
** Файловая система
*** Типы файлов
*** Разрешения файлов
*** Монтирования ФС
*** Общее устройство ФС ext семейства
*** Временные и lock файлы
** Systemd
*** Монтирования
*** Сервисы
*** journalctl
** Пакетные менеджеры
*** dpkg и apt (apt-get)
*** apt репозитории
*** rpm и dnf (yum)
*** yum репозитории
** Интерпретатор командной строки
*** Bash и bash скрипты, автодополнение
*** Процесс инициализации zsh & bash
*** Принцип работы ИКС, фунции fork & exec
*** Терминалы и эмуляторы терминалов
*** Взаимодействие процессов (фоновые задачи, сигналы)
** Man pages и их создание
** Утилита xdg-open и MIME
* Git
** Основные команды
** Внутреннее устройство и принципы работы
** Сабмодули
** Настройка репозитория (основные файлы, project badges, особенности GitLab & GitHub)
** LFS
* Взаимодейтсвие с ресурсами по сети
** curl, wget (для HTTP & FTP)
** Сертификаты HTTPS
** SSH клиент
** Утилита nmcli
** nginx
** Правила отдачи статического контента
* Сборка С/С++
** Этапы компиляции
** Макросы
** Базовые команды ASM x86, устройство стека исполнения
** Объектные файлы, name mangling, виды символов
** Хедеры, поиск системных хедеров
** Библиотеки: статические и динамические
** Линковка. ldd, rpath, LD_LIBRARY_PATH. Поиск динамических библиотек.
** Дебаггер gdb
** Санитайзер. Алгоритм работы ASAN
** Линтеры: clang-format, clang-tidy
** GNU Make
** Дефолтные пути в системе и стандартные переменные окружения
** Установка библиотек и бинарей в Linux
** CMake. Настройка сборки проекта
** CMake модули. Подключение зависимостей через FetchContent
** Устновка через CMake. CMake пакеты
* Тестирование C/C++
** Фреймворки gtest и gmock
** Принципы работы gtest & gmock
** Мутационное тестирование: фреймворк Mull
** Фаззинг: фреймворк fuzztest
** Покрытие тестов: утилиты gcov, lcov, gcovr
* Профилирование C/C++
** Утилиты /usr/bin/time и perf, flamegraph
** Фреймворк google benchmark
** Эмпирическая сложность алгоритмов
* Контейнеризация и виртуализация
** Написание Dockerfile и сборка контейнеров
** GitLab & GitHub Container Registry
** Multistaging build
** Плагины buildx & compose
** Healthcheck
** Запуск докера внутри контейнеров: DOOD & DIND
** Принцип работы Docker (linux namespaces, chroot, cgroups, overlayfs)
** Docker VS Podman
** Oracle VM Box. Виртуальные машины
* CI
** GitLab CI
** Настройка и создание GitLab Runners
** GitHub Actions
** GitLab & GitHub pages
** Antora для генерации сайтов
* Прочее
** Markup languages (JSON, YAML, TOML, XML) и схемы данных
** Asciidoctor
** Regex
** Основные Open-source лицензии
** Цифровые подписи (gpg)
 
== План ==
Драфт плана на весну можно посмотреть [https://docs.google.com/spreadsheets/d/1wpWrBUTu2o78XmHzUE0Lg8bhoIVskOzxLIWI9crGSZ4/edit?usp=sharing здесь]. <i>План будет обновлен в декабре, пока это неболее чем набросок тем и возможной их очередности.</i>
 
== Пересдачи ==
Для получения хотя бы уд3 необходимо сдать <b>все</b> задачи с курса и написать <i>"теормин"</i>. Оценка выше выставляется по результатам устной беседы с командой курса (является необязательной для уд3).


= Отбор на курс =
= Отбор на курс =
Строка 26: Строка 176:
<i>
<i>
GitLab имеет систему защиты от ботов, поэтому при подозрительных действиях может потребовать пройти дополнительную верификацию, которую в РФ сделать проблематично. Как не попасть под подозрения:
GitLab имеет систему защиты от ботов, поэтому при подозрительных действиях может потребовать пройти дополнительную верификацию, которую в РФ сделать проблематично. Как не попасть под подозрения:
# Не использоваться VPN и прочие средства модификации интернет трафика
# Не использовать VPN и прочие средства модификации интернет трафика
# Использовать человеческие имена и пароли (минимизировать число паттернов сгенерированного набора символов)
# Использовать человеческие имена и пароли (минимизировать число паттернов сгенерированного набора символов)
# Не использовать одну сеть для регистрации большого числа аккаунтов. Так, если с сети уже был недавно найден подозрительный аккаунт, то последующие регистрации также могут вызвать подозрения
# Не использовать одну сеть для регистрации большого числа аккаунтов. Так, если с сети уже был недавно найден подозрительный аккаунт, то последующие регистрации также могут вызвать подозрения
Строка 42: Строка 192:


<i>Собесы будут больше не про знания, а про мотивацию/интересы.</i>
<i>Собесы будут больше не про знания, а про мотивацию/интересы.</i>
Если вы не прошли отбор, то вы можете посещать занятия при наличии мест в аудитории и закрывать задачи для себя без ревью: все домашние задания будут в открытом доступе. <b>Важно</b>: не публикуйте свои решения, позвольте другим получить знания! Также просьба уважать авторские права создателей курса и следовать лицензиям, под которыми распространяются наши материалы!
== Факультативное закрытие курса ==
Возможность факультативного закрытия курса обсуждается индивидуально с лектором. Для этого напишите ему в личные сообщения.


= Команда курса =
= Команда курса =
Лектор: Иван Калинин
Лектор: Иван Калинин (tg: [https://t.me/taekwandodo @taekwandodo])


Старший ассистент: Виктория Попова
Старший ассистент: Виктория Попова
Строка 53: Строка 208:
* [https://devtools-course.github.io/book/ DevTools Book (In progress), I.Kalinin, V.Popova, M.Agafonov]  
* [https://devtools-course.github.io/book/ DevTools Book (In progress), I.Kalinin, V.Popova, M.Agafonov]  
* [https://devtools-course.github.io Сайт курса (также информация о прошлых итерациях курса)]
* [https://devtools-course.github.io Сайт курса (также информация о прошлых итерациях курса)]
* [https://devtools-course.github.io/exam/exam.pdf Пример программы итогового зачета]

Текущая версия от 11:18, 7 октября 2026

Внимание! Страница в разработке. Данные могут меняться! Дождитесь окончательной публикации страницы!

Описание курса

Курс посвящен пользовательской стороне Linux, а также ряду популярных инструментов разработки. Продвинутый поток фокусируется на глубоком погружении в технические аспекты и детали реализации инструментов. В рамках курса будут изучены как сами инструменты, так и устроство некоторых из них (например, внутреннее устройство и принципы работы Git, реализация Docker средствами ядра Linux, общий принцип работы интерпретаторов командной оболочки и др.)

Важно! Курс не предусматривает какого-либо использования ИИ (не рекомендуется даже поиск информации) и использование ИИ-инструментов карается вплоть до дисциплинарных взысканий. Одним из результатов курса является умение верифицировать на высоком уровне результаты генерации кода с помощью ИИ, однако получить такой навык, используя ИИ нельзя.

Курс досточно объемный, интенсивный и для закрытия на высокую оценку потребуется потратить много времени. Домашние задания будут публиковаться каждую неделю. Помимо них будут устные сдачи по блокам курса в формате тех собесов: теоретические вопросы, решение различных кейсов, лайвкодинг.

Обратите внимание, что курс не затрагивает вопросов архитектуры и проектирования ПО, управления процессами. Мы будем затрагивать исключительно технические аспекты устройства и использования компьютера, ОС и инструментов разработки.

Перед регистрацией курса просим просмотреть страницу курса: материалы прошлых лет, политики курса. Если вы уже определились, что будете заниматься только математикой/физикой/аналитикой, то высока вероятность, что вам курс не зайдет, а времени придется потратить много даже на уд3. Поэтому давайте уважать время друг друга и выбирать продвинутый поток осмысленно. Мы со своей стороны постараемся подобрать хороший ассистентов, готовых потратить на вас достаточно своего времени. Ожидается, что курс наиболее подходит тем, кто планирует связать свою карьеру с программной инженерией (осмысленной: если вы планируете быть "слоп-машиной", то курс также будет бессмысленным) и хочет прокачать хард-скиллы.

Пререквизиты курса

Закрытый хотя бы на хор курс С++
Продвинутый поток продолжает изучать экосистему С/С++, а также использует их механизмы для изучения ОС. Без хороших знаний первого семестра пройти курс будет достаточно сложно.
Знание основных структур данных
Мы не ожиданием умения "вслепую написать RBT дерево", однако ждем, что вы понимаете общие принципы работы основных структур данных из 1го семестра и можете их сравнивать. Например, ожидается понимание различий AVL, RBT и B деревьев.
Наличие Linux платформы
Так как курс про Linux и его инструменты, то без него (или mac OS) курс пройти будет невозможно.
Умение и готовность самостоятельно искать информацию
Домашние задания специально продуманы так, чтобы вы сталкивались с различными ошибками и нестандартными ситуациями. Мы ожидаем, что вы готовы гуглить ошибки, читать man страницы, stackoverflow и другие linux форумы. Использование ИИ для разрешения ошибок максимально не приветствуется, а для решения задач вообще запрещается.

Установка Linux системы

Требуется только если у вас уже нет ни Linux, ни mac OS.

Если вы впервые работаете с Linux, то советуем выбрали либо Ubuntu, либо Fedora. Ubuntu -- более Windows-like система с большим числом гайдов в интернете, однако потребляет много ресурсов. Fedora -- более дружелюбная по потреблению ресурсов система, также позволяет выбрать графическое окружение (KDE или GNOME), однако уже дальше от Windows по дизайну и чуть меньше гайдов, преимущественно на английском языке.

Oracle VM Box

Подойдет людям с 6+ ядрами процессора, 16ГБ+ оперативной памяти и 256ГБ+ жесткого диска (!= нельзя поставить иначе, просто будут часто фриззы в системе). Причем свободного места на диске должно быть хотя бы 64ГБ. Позволяет иметь полноценный Linux, однако придется чуть заморочиться. При работе с ВМ на хосте лучше не запускать ресурсо-требовальных приложений (например, несколько окон Chrome) -- тут уже ориентируйтесь на объем вашей оперативной памяти.

Скачайте образ диска ОС (.iso-файл):

  • Fedora 43, 44 версия слишком свежая, пока лучше не ставить
  • Ubuntu 2026, не устанавливайте нечетные версии, можно альтернативно 24, более старые не стоит.

Устновите Oracle VM Box и создайте виртуальную машину по следующим гайдам:

Рекомендуемые параметры ВМ:

  • Оперативная память
    • Fedora: 6ГБ+, оптимально 8ГБ+
    • Ubuntu: 8ГБ+, оптимально 10ГБ+
  • Диск
    • Тип: VDI, динамически расширяемый
    • Объем: 64ГБ+, должны уложиться в 128ГБ
  • Минимум 2 ядра, а так лучше 4+ ядер (больше половины лучше не отдавать)

Крайне советуем сразу настроить возможность копировать данные из хоста в ВМ и обратно. Дополнительно полезно создать разделяемую папку, чтобы перекидывать файлы туда-сюда.

Dual boot

Подойдет тем, кто имеет 512ГБ+ жесткого диска (оптимально 1ТБ+). Позволяет иметь две независимые системы на одном устройстве, однако самый сложный процесс настройки из всех вариантов. Здесь уже лучше найти видео-гайды в ютубе по тому, как настроить для вашей версии Windows и выбранной ОС.

WSL

Подойдет всем у кого стоит Windows, поставит почти что Linux (все же WSL -- не до конца полноценный Linux и на курсе мы это увидим, с дз этого курса проблем не будет, но в будущем могут быть приколы, если начнете заниматься низкоуровневым программированием) причем будет возможность из Linux взаимодействовать с файлами в Windows.

Установите WSL 2 по официальному гайду. Рекоммендации по дистрибутиву сохраняются.

Система оценивания

Итоговая оценка вычисляется по формуле min{Ex, Ts + Iv}, где

  • Ex -- Оценка за итоговый зачет
  • Ts -- Оценка за домашние задания (45% оценки)
  • Ex -- Оценка за устные сдачи в формате технических интервью (55% оценки)

Итоговый зачет проводится на зачетной неделе и содержит базовые вопросы по темам курса aka теормин.

Также для положительного (не пересдача) закрытия курса потребуется набрать в сумме ненулевое число баллов за домашки по каждому из блоков курса.

Программа курса

Курс представляет из себя 30 пар, по формату являющихся чем-то средним между лекцей и семинаром. Презентации с пар и часть материалов курса будут на английском языке для более эффективного погружения в среду.

Основная практика вынесена на домашние задания и взаимодействие с ассистентами. Мы не штрафуем за непройденное ревью с первого раза: смысл ревью -- довести ваше решение до идеала. Пока ревью не пройдено баллы за задачу не учитываются. В среднем по опыту необходимо пройти 3-5 итераций ревью, чтобы зачли задачу. Без получения ненулевого балла за домашки по каждому блоку закрыть курс не получится, поэтому приготовьтесь

Основные темы курса

  • Linux
    • Файловая система
      • Типы файлов
      • Разрешения файлов
      • Монтирования ФС
      • Общее устройство ФС ext семейства
      • Временные и lock файлы
    • Systemd
      • Монтирования
      • Сервисы
      • journalctl
    • Пакетные менеджеры
      • dpkg и apt (apt-get)
      • apt репозитории
      • rpm и dnf (yum)
      • yum репозитории
    • Интерпретатор командной строки
      • Bash и bash скрипты, автодополнение
      • Процесс инициализации zsh & bash
      • Принцип работы ИКС, фунции fork & exec
      • Терминалы и эмуляторы терминалов
      • Взаимодействие процессов (фоновые задачи, сигналы)
    • Man pages и их создание
    • Утилита xdg-open и MIME
  • Git
    • Основные команды
    • Внутреннее устройство и принципы работы
    • Сабмодули
    • Настройка репозитория (основные файлы, project badges, особенности GitLab & GitHub)
    • LFS
  • Взаимодейтсвие с ресурсами по сети
    • curl, wget (для HTTP & FTP)
    • Сертификаты HTTPS
    • SSH клиент
    • Утилита nmcli
    • nginx
    • Правила отдачи статического контента
  • Сборка С/С++
    • Этапы компиляции
    • Макросы
    • Базовые команды ASM x86, устройство стека исполнения
    • Объектные файлы, name mangling, виды символов
    • Хедеры, поиск системных хедеров
    • Библиотеки: статические и динамические
    • Линковка. ldd, rpath, LD_LIBRARY_PATH. Поиск динамических библиотек.
    • Дебаггер gdb
    • Санитайзер. Алгоритм работы ASAN
    • Линтеры: clang-format, clang-tidy
    • GNU Make
    • Дефолтные пути в системе и стандартные переменные окружения
    • Установка библиотек и бинарей в Linux
    • CMake. Настройка сборки проекта
    • CMake модули. Подключение зависимостей через FetchContent
    • Устновка через CMake. CMake пакеты
  • Тестирование C/C++
    • Фреймворки gtest и gmock
    • Принципы работы gtest & gmock
    • Мутационное тестирование: фреймворк Mull
    • Фаззинг: фреймворк fuzztest
    • Покрытие тестов: утилиты gcov, lcov, gcovr
  • Профилирование C/C++
    • Утилиты /usr/bin/time и perf, flamegraph
    • Фреймворк google benchmark
    • Эмпирическая сложность алгоритмов
  • Контейнеризация и виртуализация
    • Написание Dockerfile и сборка контейнеров
    • GitLab & GitHub Container Registry
    • Multistaging build
    • Плагины buildx & compose
    • Healthcheck
    • Запуск докера внутри контейнеров: DOOD & DIND
    • Принцип работы Docker (linux namespaces, chroot, cgroups, overlayfs)
    • Docker VS Podman
    • Oracle VM Box. Виртуальные машины
  • CI
    • GitLab CI
    • Настройка и создание GitLab Runners
    • GitHub Actions
    • GitLab & GitHub pages
    • Antora для генерации сайтов
  • Прочее
    • Markup languages (JSON, YAML, TOML, XML) и схемы данных
    • Asciidoctor
    • Regex
    • Основные Open-source лицензии
    • Цифровые подписи (gpg)

План

Драфт плана на весну можно посмотреть здесь. План будет обновлен в декабре, пока это неболее чем набросок тем и возможной их очередности.

Пересдачи

Для получения хотя бы уд3 необходимо сдать все задачи с курса и написать "теормин". Оценка выше выставляется по результатам устной беседы с командой курса (является необязательной для уд3).

Отбор на курс

На курсе планируется 55-60 студентов (мах 60). Для отбора на курс необходимо зарегистрироваться на GitLab (регистрация -- это нулевой этап отбора) и заполнить форму (появится позже).

GitLab имеет систему защиты от ботов, поэтому при подозрительных действиях может потребовать пройти дополнительную верификацию, которую в РФ сделать проблематично. Как не попасть под подозрения:

  1. Не использовать VPN и прочие средства модификации интернет трафика
  2. Использовать человеческие имена и пароли (минимизировать число паттернов сгенерированного набора символов)
  3. Не использовать одну сеть для регистрации большого числа аккаунтов. Так, если с сети уже был недавно найден подозрительный аккаунт, то последующие регистрации также могут вызвать подозрения
  4. Не спидранить регистрацию и не быть улиткой: заполняйте все поля в среднем, спокойном темпе
  5. Использовать почту phystech.edu -- она вызывает минимум сомнений
  6. При повторной попытке регистрации не использовать данные похожие на прошлые: если уже в подозрения улетел ник qwerty, то qwerty2008 будет также вызывать подозрения
  7. Иногда может помогать режим инкогнито

В случае превышения числа желающих 60 человек будет произведен отбор по следующим параметрам:

  • Студенты ФУПМа и ПМИ.Мат имеют наинизший приоритет
  • Студенты ПМИ.Инф и ИВТсп имеют более высокий приоритет при прочих равных
  • Ожидается, что студенты закрыли курсы плюсов и алгосов на хор и выше
  • Будут проведены устные собесы, по результатам которых отранжируем желающих

Собесы будут больше не про знания, а про мотивацию/интересы.

Если вы не прошли отбор, то вы можете посещать занятия при наличии мест в аудитории и закрывать задачи для себя без ревью: все домашние задания будут в открытом доступе. Важно: не публикуйте свои решения, позвольте другим получить знания! Также просьба уважать авторские права создателей курса и следовать лицензиям, под которыми распространяются наши материалы!

Факультативное закрытие курса

Возможность факультативного закрытия курса обсуждается индивидуально с лектором. Для этого напишите ему в личные сообщения.

Команда курса

Лектор: Иван Калинин (tg: @taekwandodo)

Старший ассистент: Виктория Попова

Ассистенты: tbd..

Материалы