ISDElective — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Регистрация)
(Осень 2019)
Строка 17: Строка 17:
 
Первое занятие запланировано на 25 сентября.
 
Первое занятие запланировано на 25 сентября.
  
1 модуль: c 25 сентября по 16 октября – ауд. '''G118'''<br />
+
1 модуль: c 25 сентября по 16 октября – ауд. '''G103 (внимание, аудитория изменилась!)'''<br />
2 модуль: c 23 октября по 20 ноября – ауд. '''G118'''
+
2 модуль: c 23 октября по 20 ноября – ауд. '''G103'''
  
 
Не переживайте, если мест для официальной записи на факультатив нет.  
 
Не переживайте, если мест для официальной записи на факультатив нет.  
 
Если вам интересен курс, имеет смысл всё равно появиться на первом занятии.
 
Если вам интересен курс, имеет смысл всё равно появиться на первом занятии.
 
Мы что-нибудь придумаем.
 
Мы что-нибудь придумаем.
Курс смогут проходить более 20 человек.
+
Курс смогут проходить до 40 человек (по размеру аудитории).
  
 
== Предварительный список тем курса ==
 
== Предварительный список тем курса ==

Версия 23:05, 25 сентября 2019

Страница факультативного курса "Методы разработки программного обеспечения" (Industrial Software Development)

О курсе

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

Регистрация

Для регистрации нужно заполнить эту анкету

Наша группа в телеграмме

Осень 2019

Курс будет проходить по средам с 16:40 до 19:30.
Каждую неделю запланированы одна лекция и одно практическое занятие.
Первое занятие запланировано на 25 сентября.

1 модуль: c 25 сентября по 16 октября – ауд. G103 (внимание, аудитория изменилась!)
2 модуль: c 23 октября по 20 ноября – ауд. G103

Не переживайте, если мест для официальной записи на факультатив нет. Если вам интересен курс, имеет смысл всё равно появиться на первом занятии. Мы что-нибудь придумаем. Курс смогут проходить до 40 человек (по размеру аудитории).

Предварительный список тем курса

Раздел 1. Системы контроля версий (СКВ) и работа с ними

  • Какие бывают СКВ?
  • История средств и методов контроля версий ПО.
  • Какие бывают репозитории?
  • Что такое моно-репозитории и в чём их отличие от других?
  • Почему современные компании массово переходят на моно-репозитории?

Слайды для лекции по VCS

Раздел 2. Тестирование в масштабных программных проектах

  • Зачем нужны модульные тесты?
  • В чём состоят особенности больших проектов, когда речь идёт о тестировании?
  • Что такое интеграционное и регрессионное тестирование, в чём отличия?
  • Какие практики тестирования применяются?
  • Что такое разработка через тестирование (TDD)?

Раздел 3. Непрерывная интеграция

  • Что такое непрерывная интеграция (CI)?
  • Зачем применяется CI и в чём существо используемых методов?
  • Какие современные методы развёртывания ПО применяются в промышленном программировании?
  • В чём отличие библиотеки и приложения, когда речь идёт о развертывании?
  • Что такое контейнеры и как они применяются?

Раздел 4. Практики командной работы с программным кодом

  • Что такое стиль кода?
  • Зачем нужны соглашения о стиле кода? Нужны ли они в действительности?
  • Что такое linter и как с ним работать?
  • Что такое рефакторинг? Как проводить рефакторинг? Когда вам нужен рефакторинг, а когда не нужен?
  • Как правильно распределить изменения по коммитам?
  • Что такое рецензирование кода (code review)?
  • Как готовить код к рецензированию?
  • Как проводить рецензирование чужого кода?
  • Как организовать рецензирование кода в команде?

Раздел 5. Планирование и работа с системами трекинга

  • Что такое баг-трекер (bug/issue tracker)?
  • Какие используются эффективные практики документирования ошибок и требований?
  • Что такое релизные циклы? Как их планировать?
  • Как должна выглядеть хорошая запись об ошибке для себя/другого программиста?
  • Что особенно важно не забыть при документировании проблем и ошибок в ПО?

Раздел 6. Особенности разработки и использования открытого программного обеспечения

  • Что такое открытое программное обеспечение?
  • В чём особенности проектов с открытым исходным кодом?
  • Всегда ли ПО с открытым кодом разрабатывается сообществом?
  • Как эффективно использовать ПО с открытым исходным кодом и не наступать на сопутствующие грабли?
  • Какие существуют практики участия в коллективно разрабатываемых проектах?
  • Каковы особенности использования ПО с открытым исходным кодом в коммерческих разработках?

Раздел 7. Исследования и разработка

  • Чем исследовательские статьи могут быть полезны прикладному программисту?
  • Как правильно инженеру читать статьи? И надо ли вообще их читать?
  • Как и где искать новые способы решения задач, которые надо решать?
  • Чем отличается характер работы в исследовательских (R&D) компаниях или отделах компаний от работы обычного прикладного/системного программиста?
  • Стоит ли описывать в исследовательских статьях свои собственные результаты? Что это даёт инженеру, который не занимается научной работой?

Раздел 8. Социальные аспекты жизни программиста

  • Что такое интервью? Когда и какие они бывают у программистов?
  • Как правильно готовиться к и проходить интервью?
  • В чём состоят особенности работы программиста в распределённых командах из многих участников?
  • Почему работа современного программиста не может рассматриваться в отрыве от социальных аспектов?

Оценка

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

О_накопленная формируется на основании суммы баллов, полученных в ходе курса, по следующей схеме:

Балл 0 1-19 20-29 30-39 40-49 50-59 60-69 70-79 80-89 90-99 ≥100
О_накопленная 0 1 2 3 4 5 6 7 8 9 10

Результирующая оценка вычисляется по формуле: О_результирующая = min(0,8*О_экзамен + 0,4*О_накопленная; 10)

Авторы курса

  • В. К. Кошелев - лектор курса, ведущий разработчик компании JetBrains (вот тут Владимир рассказывает про баги)
  • А. А. Мицюк - научный сотрудник ФКН (личная страница)

Благодарности

Факультатив проходит при поддержке компании JetBrains.