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

Материал из Кафедра математической кибернетики
Перейти к: навигация, поиск


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

Программа курса

Разделы будут наполняться по мере проведения занятий.

Первый блок: общие навыки

Задание 1: Git

Обязательно для получения положительной оценки.

Крайний срок сдачи: 17.09.2017, 23:59.

Максимальная оценка за выполнение в срок: 20 баллов.

Штраф за невыполнение в срок: -2 балла за каждый день сверх крайнего срока, но не ниже ноля баллов за задание.

Собственно задание:

  1. Зарегистрироваться в системе Gitlab сервера mks1.cs.msu.ru с логином, позволяющим легко идентифицировать зарегистрировавшегося (предпочтительно - ФамилияИО латинскими буквами).
  2. Обратиться к ведущему с просьбой добавиться в проект "prac-sandbox" (песочницу).
  3. От своего имени (через свой логин в Gitlab) дополнить дерево ревизий проекта "prac-sandbox" чем-нибудь похожим вот на это: от текущей ревизии создать ветку с названием, основанным на своей фамилии, сделать коммит в ветке (с какими угодно изменениями), создать вторую такую же ветку из первой, сделать коммит во второй ветке, и затем постепенно слить вторую ветку с первой, а первую - с главной. Если дерево получится не совсем таким, но тоже "разумным" и показывающим базовые навыки работы с git, то задание тоже может быть принято.
  4. Сообщить любым способом о выполнении задания.

Задание 2: cmake

Обязательно для получения положительной оценки.

Презентации: make, cmake.

Крайний срок сдачи: 24.09.2017, 23:59.

Максимальная оценка за выполнение в срок: 20 баллов.

Штраф за невыполнение в срок: -2 балла за каждый день сверх крайнего срока, но не ниже ноля баллов за задание.

Собственно задание:

  1. Заглянуть в репозиторий prac-318-cmake.
  2. Посмотреть свой номер варианта в файле tasks.xlsx .
  3. Скачать все файлы из папки с названием - номером варианта.
  4. Не изменяя скачанных файлов, дополнить их файлами сборки cmake, позволяющими собрать цели, описанные в скачанном файле task.txt .
  5. Сообщить решение любым способом, например,
    • прислать архив со всеми файлами ему на почту, или
    • выложить решение в новый репозиторий в gitlab-мк и сообщить об этом.

Задание 3: catch

ВНИМАНИЕ!!! В варианте номер 2 обнаружена ошибка: функция show_min должна возвращать значение минимального элемента кучи, т.е. h[0]. Исправление загружено в репозиторий.

Обязательно для получения положительной оценки.

Презентация: тестирование ПО.

Крайний срок сдачи: 13.10.2017, 10:00 15.10.2017, 23:59.

Максимальная оценка за выполнение в срок: 20 баллов.

Штраф за невыполнение в срок: -2 балла за каждый день сверх крайнего срока, но не ниже ноля баллов за задание.

Собственно задание:

  1. Заглянуть в репозиторий prac-318-tests.
  2. Посмотреть свой номер варианта в файле tasks.xls .
  3. Скачать все файлы из папки с названием - номером варианта.
  4. Не изменяя скачанных файлов, дополнить их файлом main.cpp, в котором должны присутствовать тест-кейсы, тестирующие функционирование класса из варианта задания.
  5. Использование библиотеки Catch является необходимым условием для сдачи задания.
  6. Тесты для класса должны быть разнообразными. Необходимо иметь несколько видов тестовых данных:
    • первый тест должен быть максимально прост, его цель - проверить, работает ли компонент вообще,
    • вторая группа тестов должна проверять граничные/вырожденные случаи (здесь находится, в том числе, и проверка правильности выброса соответствующих исключений),
    • в следующую группу необходимо включить тесты, проверяющие правильность работы компонента в целом, при этом здесь должны присутствовать 1) специальные тесты, проверяющие работоспособность компонента в случае специальной организации входных данных (например, входные данные могут быть отсортированы в порядке возрастания, в порядке убывания, или значения всех параметров могут быть равны между собой) и 2) общие тесты, проверяющие, по возможности, все ветви логической схемы программы.
    • в последнюю группу тестов надо включить тесты, которые должны в полном объеме отражать реальную нагрузку на соответствующие компоненты - здесь, в частности, тестируются такая работа, при которой происходит многократное заполнение и опустошение соответствующих структур данных.
  7. Разные виды тестов надо оформлять в виде отдельных тест-кейсов.
  8. Сообщить решение любым способом, например,
    • прислать архив со всеми файлами ему на почту, или
    • выложить решение в новый репозиторий в gitlab-мк и сообщить об этом.

Оценка задания будет производиться путём подмены правильной реализации рассматриваемых классов их ошибочными реализациями. Любое поведение, отличающееся от эталонного (представленного в реализации из варианта задания), надо считать ошибочным. В ошибочных реализациях гарантируется лишь совпадение сигнатур public членов классов - private члены, реализация конструктора, а также тел inline-функций и значений параметров функций по умолчанию могут быть произвольными. При выполнении необходимых условий балл за задание будет равен взятой от максимального балла доле обнаруженных тестами ошибочных реализаций (разумеется, на эталонной реализации все написанные тесты обязаны проходить успешно).

Второй блок: практические задания

Третий блок: теоретические задания

Критерии выставления оценки

В курсе предполагаются:

  • Несколько заданий в первом блоке. Максимальная суммарная оценка за выполнение всех заданий первого блока - 100 баллов. Некоторые из этих заданий обязательны для выполнения.
  • Два задания во втором блоке. Максимальная оценка за выполнение каждого из этих заданий - 100 баллов.
  • Несколько заданий в третьем блоке. Максимальная суммарная оценка за выполнение всех заданий третьего блока - 100 баллов.

Для получения положительной оценки необходимо сдать все обязательные задания и, кроме того, из максимальных 400 баллов (100 за первый блок, 200 за второй блок, 100 за третий блок) набрать хотя бы

  • 320 для получения оценки "Отлично";
  • 240 для получения оценки "Хорошо";
  • 160 для получения оценки "Удовлетворительно".

Критерии получения оценки при недостаточном количестве баллов по итогам работы в семестре обсуждаются отдельно после завершения семестра.