Практикум (3 курс, осенний семестр 2016 года)

Материал из Кафедра математической кибернетики
Версия от 18:20, 9 февраля 2019; Root (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск


Общая информация

Программа семинаров

Семинар 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 декабря. Контрольная по третьему разделу курса.

Домашние задания

Первое домашнее задание. Изоморфизм графов

Второе домашнее задание

  • Общее описание задания.
  • Срок выполнения первой части: 14 ноября.
  • Срок выполнения второй части: 21 ноября.
  • Срок выполнения третьей части: 28 ноября.

Третье домашнее задание.

C++: пример работы с библиотекой bdd (BuDDy).

C++: пример работы с регулярными выражениями (Boost.regex).