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

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

Научно-исследовательский семинар "Инструменты промышленной разработки"

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

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


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

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

Аннотация

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

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

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

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

  • Как отлаживать программы даже в очень сложных окружениях с помощью gdb и терминала
  • Узнать о том, как пакетные менеджеры устроены в системах как Ubuntu, Arch Linux и так далее, что такое SemVer и как разрешать конфликты зависимостей
  • Знать, зачем нужна виртуализация как VPN, SSH, Docker, FUSE
  • Уметь верстать в самой сложной системе написания формул и текста как LaTeX, это также поможет в будущем при написании КР и ВКР
  • Понимать, как современные языки программирования создаются на основе технологии LLVM
Содержание учебной дисциплины

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

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

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

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

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

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

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

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

  • 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

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

  • Christian Cachin, Rachid Guerraoui, Luís Rodrigues. Introduction to Reliable and Secure Distributed Programming, Springer Heidelberg, 2011.