2012/2013 — Осенний семестр
Современная практика коллективной разработки ПО
Годовой курс по выбору.
Разделы: Информатика, Бизнес и управление проектами, Программирование.
Кафедра информатики.
Проходит: по пятницам, предположительно с 13:55 до 15:20, первое занятие 14 сентября. Аудитория: 409 ЛК.
Лектор: Тимур Исходжанов, Google Software Engineer.
Курс рассчитан на студентов 3 — 6 курсов, собирающимся работать в software-индустрии.
Примерная программа курса, осенний семестр
- Цель курса, основные темы
- Краткое знакомство с централизированными системами контроля версий (Source Control), работа с основными командами svn (Subversion)
- Утилиты diff, diffmerge, patch
- Важность оформления кода, рекомендации по оформлении кода Google C++ Code Style Guide
- Комментарии TODO, FIXME
- Тестирование кода при помощи проверки инвариантов: макросы assert, CHECK
- RAII
- Базовые правила деловой переписки по e-mail
- Понятие Code Review, система rietveld, утилита upload.py
- Системы сборки для проектов на C++: Makefile, CMake
- Open Source лицензии: BSD, GPL, LGPL
- Issue trackers; грамотное написание bug-report'ов. Redmine.
- Тестирование на примере googletest и Python unittest, Test Driven Development (TDD)
- Code coverage
- Средства автоматического тестирования: buildbot, valgrind
- Тестирование сложных архитектур. Dependency injection; mock- и fake-объекты.
- Логгирование
- Проблемы коллективного решения, brainstorming идей проектов на второй семестр
По ходу первого семестра также происходит краткое знакомство с языком Python
Для зачёта студентам необходимо пройти цикл из нескольких code review, в которых затронуты основные темы, обсуждаемые на лекциях и загрузить (commit) свои правки в общий репозиторий.
Что развивает курс (данные для «Вектора»)
- Быстрое изучение нового ПО (курс сфокусирован на этом)
- Понимание проблем заказчика/потребителя (курс сфокусирован на этом)
- Описание результатов своей деятельности (курс сфокусирован на этом)
- Работа в команде (курс сфокусирован на этом)
- Практика программирования (языки и технологии) (курс сфокусирован на этом)
- Использование ПО для управления проектами (курс сфокусирован на этом)
Информация о развиваемых компетенциях занесена в систему для работы «Вектора». Поскольку занесение информации производится редакторами проекта, а не авторами курсов, информация может быть неполной или даже частично неверной. Если Вы нашли ошибку, напишите нам об этом. См. также подробнее о системе «Вектор» и полный список компетенций.