====== Правила защиты курсовых работ ====== ===== Пререквизиты ===== - Для допуска к защите у студента должен быть сделан пуллреквест по правилам: [[courses:programming:pr_kurs]] - Курсовая должна быть выполнена в полном объеме и в соответствии с полученным студентом заданием. - В назначенный день и время студент должен быть онлайн в discord. В случае, если студент хочет проверить заранее свои технические возможности использования системы прокторинга (записи камеры и экрана на его устройстве) возможности, он должен связаться с преподавателем не позднее, чем за 72 часа до защиты. ===== Как проходит защита ===== __Перед основным заданием__ студент решает **проходной тест**, состоящий из утверждений, среди которых нужно выбрать верные. В тесте допускается сделать одну ошибку, то есть либо отметить как верный ответ, который является неверным, либо наоборот. __Например__: если в тесте два верных утверждения, и студент //выбрал одно верное утверждение и одно неверное//, то это будет считаться за **две ошибки**: верное утверждение выбрано как неверное **и** неверное утверждение выбрано как верное. В случае успешного решения теста студент допускается к выполнению основного задания. __**В противном случае за курсовую работу выставляется оценка "неудовлетворительно".**__ Основное задание представляет собой дополнительную подзадачу курсовой работы: [[courses:programming:cw_defence_steps]] После того, как студент решит задачу, студента будет ожидать разговор с преподавателем. На этот момент разрешается завершить прокторинг. Во время общения с преподавателем после успешно выполенного задания студент показывает преподавателю экран и изображение с веб-камеры. Студент: - Демонстрирует работоспособность выполненного им на защите задания. - Демонстрирует работоспособность остальных подзадач курсовой работы - Отвечает на вопросы преподавателя по заданию на защите и основной курсовой работе. Вопросы охватывают не менее трех тем. ===== Правила оценивания (курсовой и задания на защиту) ===== Студент получает максимальную оценку согласно выбранному уровню курсовой работы, если выполнены все следующие условия: * Студент выполнил полностью задание на защиту, программа компилируется, запускается и демонстрирует корректность работы на тестах, предложенных студентом и преподавателем. Задание было успешно встроено в курсовую работу. * Студент верно отвечает на все вопросы преподавателя. * Студент способен прокомментировать свою работу как с точки зрения логики её выполнения, так и с точки зрения использования конструкций языка. Студент получает оценку неудовлетворительно, если выполняется хотя бы одно из условий: * Не пройдена автоматическая проверка выполняемого задания * Студент не может скомпилировать курсовую работу с добавленной по итогам защиты функциональностью к моменту окончания времени на защиту. Иными словами, код к моменту завершения времени на выполнение задания не корректный. * Основная курсовая работа или курсовая работа с добавленным заданием аварийно завершается или выдает неверный ответ на всех тестах. * Основная курсовая работа или курсовая работа с добавленным заданием аварийно завершается или выдает неверный ответ на нескольких тестах, но студент не может объяснить причину такого поведения программы. Под объяснением следует понимать способность указать строчку в коде программы в которой присутствует ошибка, назвать причину ошибки и объяснить алгоритм исправления ошибки. * Студент не может прокомментировать логику работы своей программы и/или дать комментарии по программному коду. Неправильно данные ответы приравниваются к неспособности студента дать комментарии. Основания для снижения оценки: * Задание выполнено полностью, но корректный результат работы программа показывает только на нескольких тестах. * Студент совершает более двух ошибок при ответе на вопросы. * Есть части программы, по которым студент не может дать комментарии ===== Минимально требуемый набор навыков для выполнения задания (курсовая осеннего семестра) ===== * Сборка программы с использованием компилятора gcc * Умение запуска программы и ввода данных * Ввод и вывод текстовых данных в программе на языке Си * Работа с символами на языке Си * Операции над строками (символьными массивами) в языке Си: разделение строки на подстроки, копирование, вставка, конкатенация. Умение использовать функции из string.h * Указатели в языке Си (в том числе указатели на указатели) * Работа с динамической памятью в языке Си (выделение / высвобождение / изменение размера выделенной области) * Работа с динамическими массивами в языке Си, в том числе многомерными. Например, с динамическими массивами строк * Использование функции qsort из libc для сортировки массивов символов и массивов строк * Навык работы с датами в программах на языке Си (используя функции библиотеки libc) * Навыки работы с “широкими” символами (wchar_t) и строками в языке Си. (для заданий, где это требуется условием)