• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Бакалаврская программа «Прикладная математика и информатика»

Инструменты промышленной разработки

2021/2022
Учебный год
RUS
Обучение ведется на русском языке
3
Кредиты
Статус:
Курс обязательный
Когда читается:
2-й курс, 1, 2 модуль

Преподаватель


Кутенин Данила Михайлович

Программа дисциплины

Аннотация

На занятиях студенты узнают все о продвинутых темах в рамках Компьютерных Наук, от операционных систем до машинного обучения, но есть один важный предмет, который редко освещается в стандартной программе, и вместо этого студенты сами его проходят: владение своими инструментами разработки. Курс предназначен для освоения работы с командной строкой, использования мощного текстового редактора, использования необычных функций систем контроля версий и многого другого. Мы рассмотрим дизайн и внутренности этих инструментов, чтобы студенты в будущем свободно владели и понимали остальных разработчиков, а также думали в рамках этих инструментов наиболее гибко. Люди проводят сотни часов, используя эти инструменты в процессе обучения (и тысячи часов в течение своей карьеры), поэтому имеет смысл сделать процесс обучения максимально плавным и простым. Овладение ими не только позволяет вам тратить меньше времени на выяснение того, как подчинить ваши инструменты своей воле, но также позволяет решать проблемы, которые раньше казались невероятно сложными.
Цель освоения дисциплины

Цель освоения дисциплины

  • Понимать наиболее популярный скриптовый язык программирования и инфраструктуру вокруг него, в том числе и командные терминалы.
  • Знать как работать с открытым исходным кодом и настраивать системы вокруг него.
Планируемые результаты обучения

Планируемые результаты обучения

  • Знать дизайн систем контроля версий как git, svn, mercurial
  • Понимать архитектуру и дизайн текстовых редакторов как vim, VSCode и Sublime Text
  • Понимать системы сборки для более простой настройки проектов
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Вводная лекция. Shell, env variables, различные виды, zsh, fish, tmux. Примеры типичных команд и ошибок.
  • Shell scripting, grep, find, curl, sed.
  • Мощь текстовых редакторов, vim, Sublime Text и VSCode. Философия, архитектура, ключевые идеи.
  • Системы контроля версий. git, mercurial и svn, основные идеи.
  • Безопасность и приватность.
  • Отловление ошибок в программах, дебаггеры, gdb, lldb, общая структура linux процессов.
  • Системы сборки. cmake, make, bazel, gopackage, requirements.txt, CI, тестирование. Основные определения, понятия, способы сборки.
  • Децентрализованные пакетные менеджеры. apt, pacman, brew. Дистрибутивы Linux. Ubuntu, Gentoo, Arch Linux, Fedora, их философия и выбор. Парадигма открытого исходного кода, лицензии.
  • Виртуализация и контейнеризация: VM, Docker, FUSE, SSHFS, SSH.
  • Системы вёрстки: Markdown, Marp, LaTeX, LaTeX beamer, Overleaf.
  • AWS, Google Cloud, простейшая настройка ресурсов для проектов.
  • Железо, характеристики, производительность, числа, который каждый программист должен знать.
  • Технология LLVM для написания языков программирования.
  • Вопросы и ответы. Дополнительная лекция для тем, которые студенты хотели бы разобрать.
Элементы контроля

Элементы контроля

  • неблокирующий Домашнее задание 1
  • неблокирующий Домашнее задание 2
  • неблокирующий Домашнее задание 3
  • неблокирующий Домашнее задание 4
Промежуточная аттестация

Промежуточная аттестация

  • 2021/2022 учебный год 2 модуль
    Итог = Мин(Округление(0.2 * ДЗ1 + 0.3 * ДЗ2 + 0.2 * ДЗ3 + 0.3 * ДЗ4 + Б), 10), где ДЗ1, ДЗ2, ДЗ3, ДЗ4 — оценки за все домашние задания, Б — бонус за исправление лекций, нахождения опечаток в записанном лекционном материале. Автоматы не предусмотрены. Экзамена не планируется.
Список литературы

Список литературы

Рекомендуемая основная литература

  • Scott Chacon, & Ben Straub. (2014). Pro Git (Second Edition). Web server without geographic relation, Web server without geographic relation (org): Apress. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsbas&AN=edsbas.E86D0407

Рекомендуемая дополнительная литература

  • Titus Winters, Tom Manshreck, & Hyrum Wright. (2020). Software Engineering at Google : Lessons Learned From Programming Over Time. O’Reilly Media.