====== Правила защиты курсовых работ ====== ===== Пререквизиты ===== - Для допуска к защите у студента должен быть сделан пуллреквест по правилам: [[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) и строками в языке Си. (для заданий, где это требуется условием)