Практикум (3 курс, осенний семестр 2016 года)
Общая информация
- Занятия проходят по понедельникам с 14:35 до 16:10 в аудитории 609.
- Занятия ведут Шуплецов Михаил Сергеевич и Данилов Борис Радиславович.
- Правила выставления оценки в семестре.
Программа семинаров
Семинар 1. Вводный семинар. 5 сентября. Объявление общего плана занятий в семестре. Критерии выставления оценки в конце семестра. Анкетирование студентов. Проведение вводной контрольной для оценки знаний студентов.
Инструменты разработки программного обеспечения
Семинар 2. Стандарты оформления кода. 12 сентября. Критерии качества программ. Стандарты оформления кода (Code style guides). Презентация.
Семинар 3. Системы контроля версий. 19 сентября. Централизованные и распределенные системы контроля версий. Разработка с использованием систем контроля версий. Система контроля версий Git. Основные возможности Git. Работа с системой контроля версий Git. Навигация по истории проекта (commit history). Работа с ветвями(branching): создание, управление и слияние. Работа с удаленным сервером. Системы управления проектом. Обзор возможностей системы GitLab. Презентация.
Семинар 4. Автоматическая сборка проекта. 26 сентября. Автоматическая сборка проекта. Утилита GNU Make. Презентация (обновлена 26.09.2016).
Семинар 5. Автоматическая сборка проекта (продолжение). Разбор параметров командной строки. 3 октября. Утилита CMake. Презентация по CMake. getopt, Boost.Program_options. Презентация по разбору командной строки в C/C++.
Семинар 6. Тестирование программ. 10 октября. Введение в тестирование. Распространенные ошибки. Основные принципы и подходы к тестированию программ. Среды тестирования программ на примере CppUnit.
Семинар 7. Автоматическая документация кода. 24 октября. Автоматическая документация кода. Создание автоматической документации при помощи Doxygen. Презентация.
Структуры данных и элементы STL
Семинар 8. Реализация очередей с приоритетами. 31 октября. Бинарное дерево поиска. Поиск по ключу, поиск максимума и минимума, предшествующий и последующий элементы. Вставка и удаление. Пирамида (binary heap). Свойство пирамиды. Поддержка свойства пирамиды. Создание пирамиды. Пирамидальная сортировка. Очередь с приоритетами.
Семинар 9. Хэш-таблицы. 7 ноября. TBA
Семинар 10. Системы непересекающихся множеств. 14 ноября. Система непересекающихся множеств. Представление непересекающихся множеств с помощью списков. Лес непересекающихся множеств. Корневая, весовая и ранговая эвристики. Влияние эвристик на время работы. Анализ объединения по рангу со сжатием пути. Презентация.
Семинар 11. Первая контрольная. 21 ноября. Контрольная по первым двум разделам курса.
Приемы объектно ориентированного программирования
Семинар 12. Паттерны проектирования – классификация паттернов. Порождающие паттерны. 28 ноября. TBA
Семинар 13. Структурные паттерны. 5 декабря. TBA
Семинар 14. Паттерны поведения. 12 декабря. TBA
Семинар 15. Контрольная. 19 декабря. Контрольная по третьему разделу курса.
Домашние задания
Первое домашнее задание. Изоморфизм графов
- Общее описание задания.
- Часть 1. Срок выполнения: 19 сентября.
- Часть 2. Срок выполнения: 10 октября.
- Часть 3 и 4. Срок выполнения: 17 октября.
- Часть 5 и 6. Срок выполнения: 24 октября.
Второе домашнее задание
- Общее описание задания.
- Срок выполнения первой части: 14 ноября.
- Срок выполнения второй части: 21 ноября.
- Срок выполнения третьей части: 28 ноября.
Третье домашнее задание.
- Общее описание задания.
- Срок выполнения задания: 20 декабря.