====== Правила защиты курсовых работ ======
===== Пререквизиты =====
- Для допуска к защите у студента должен быть сделан пуллреквест по правилам: [[courses:programming:pr_kurs]]
- Курсовая должна быть выполнена в полном объеме и в соответствии с полученным студентом заданием.
- В назначенный день и время студент должен быть онлайн в студенческов чате (Rocket chat). В случае, если студент хочет проверить заранее свои технические возможности использования системы прокторинга (записи камеры и экрана на его устройстве) возможности, он должен связаться с преподавателем не позднее, чем за 72 часа до защиты.
===== Как проходит защита =====
__Основное задание__ представляет собой дополнительную подзадачу курсовой работы: [[courses:programming:cw_defence_steps]]
* В случае успешного выполнения (решение основного и \ или упрощенного задания) студент допускается до теста на теоритический минимум. __**В противном случае за курсовую работу выставляется оценка «неудовлетворительно».**__
__После основного задания__ необходимо выполнить **тест** теоретического минимума. Тест состоит из утверждений, среди которых нужно выбрать верные (и не выбирать ошибочные). В тесте считается, что ошибка -- это выбор ошибочного варианта или отсутствие выбора верного варианта. В тесте допускается сделать //**одну ошибку**, то есть либо отметить как верный ответ, который является неверным, либо наоборот//.
^ № ^ Утверждение ^ Полностью верный ^ 1 ошибка (лишнее) ^ 1 ошибка (пропуск) ^ 2 ошибки (пропуск + лишнее) ^
| 1 | Нерно | — | — | — | — |
| 2 | Неверно | — | — | — | — |
| 3 | Верно | x | x | — | — |
| 4 | Неверно | — | x | — | x |
| 5 | Верно | x | x | x | x |
| 6 | Неверно | — | — | — | — |
| 7 | Неверно | — | — | — | — |
| 8 | Неверно | — | — | — | — |
В таблице рассмотрено 4 случая. Легенда:
* "—" -- не выбран ошибочный вариант
* "—" -- выбран ошибочный вариант
* "x" -- выбран верный
* "x" -- выбран неверный
* В случае успешного выполнения теста на теоретический минимум студент допускается до устного собеседования с преподавателем. __**В противном случае за курсовую работу выставляется оценка «неудовлетворительно».**__
После того, как студент решит задачу, студента будет ожидать разговор с преподавателем. На этот момент разрешается завершить прокторинг. Во время общения с преподавателем после успешно выполенного задания студент показывает преподавателю экран и изображение с веб-камеры. Студент:
- Демонстрирует работоспособность выполненного им на защите задания.
- Демонстрирует работоспособность остальных подзадач курсовой работы
- Отвечает на вопросы преподавателя по заданию на защите и основной курсовой работе. Вопросы охватывают не менее трех тем.
===== Правила оценивания (курсовой и задания на защиту) =====
Студент получает максимальную оценку согласно выбранному уровню курсовой работы, если выполнены все следующие условия:
* Студент выполнил полностью задание на защиту, программа компилируется, запускается и демонстрирует корректность работы на тестах, предложенных студентом и преподавателем. Задание было успешно встроено в курсовую работу.
* Студент верно отвечает на все вопросы преподавателя.
* Студент способен прокомментировать свою работу как с точки зрения логики её выполнения, так и с точки зрения использования конструкций языка.
Студент получает оценку **__неудовлетворительно__**, если выполняется хотя бы одно из условий:
* Не пройдена автоматическая проверка выполняемого задания
* Студент не может скомпилировать курсовую работу с добавленной по итогам защиты функциональностью к моменту окончания времени на защиту. Иными словами, код к моменту завершения времени на выполнение задания не корректный.
* Основная курсовая работа или курсовая работа с добавленным заданием аварийно завершается или выдает неверный ответ на всех тестах.
* Основная курсовая работа или курсовая работа с добавленным заданием аварийно завершается или выдает неверный ответ на нескольких тестах, но студент не может объяснить причину такого поведения программы. Под объяснением следует понимать способность указать строчку в коде программы в которой присутствует ошибка, назвать причину ошибки и объяснить алгоритм исправления ошибки.
* Студент не может прокомментировать логику работы своей программы и/или дать комментарии по программному коду. Неправильно данные ответы приравниваются к неспособности студента дать комментарии.
Основания для снижения оценки:
* Задание выполнено полностью, но корректный результат работы программа показывает только на нескольких тестах.
* Студент совершает хотя бы одну ошибку при ответе на вопросы.
* Есть части программы, по которым студент не может дать комментарии
===== Минимально требуемый набор навыков для выполнения задания (курсовая осеннего семестра) =====
* Сборка программы с использованием компилятора gcc
* Умение запуска программы и ввода данных
* Ввод и вывод текстовых данных в программе на языке Си
* Работа с символами на языке Си
* Операции над строками (символьными массивами) в языке Си: разделение строки на подстроки, копирование, вставка, конкатенация. Умение использовать функции из string.h
* Указатели в языке Си (в том числе указатели на указатели)
* Работа с динамической памятью в языке Си (выделение / высвобождение / изменение размера выделенной области)
* Работа с динамическими массивами в языке Си, в том числе многомерными. Например, с динамическими массивами строк
* Использование функции qsort из libc для сортировки массивов символов и массивов строк
* Навык работы с датами в программах на языке Си (используя функции библиотеки libc)
* Навыки работы с “широкими” символами (wchar_t) и строками в языке Си. (для заданий, где это требуется условием)