План лабораторных, баллы и защита
Как устроен курс
Практические занятия по курсу «Промышленное программирование на языке C» включают в себя выполнение четырёх обязательных лабораторных работ в осеннем семестре. Занятия проходят раз в неделю в компьютерных классах. Теорию читают на лекциях, а на практике осваивается синтаксис через решение задач, даются консультации по лабораторным.
Цель курса — базовые навыки программирования на C: работа с памятью, указателями, файлами и простыми структурами данных. Это фундамент для системного программирования и встраиваемых систем.
Лабораторные работы
| № | Тема | Ключевые понятия |
|---|---|---|
| ЛР1 | Одномерные массивы и последовательности | ввод/вывод, циклы, условия, статические одномерные массивы |
| ЛР2 | Многомерные массивы и функции | двумерные и трёхмерные массивы, вложенные циклы, обход по измерениям, разбиение программы на функции, передача массивов в функции |
| ЛР3 | Структуры, списки, динамическая память | struct, связные списки, обход, адреса, malloc/free, работа с текстовыми файлами |
| ЛР4 | Бинарные файлы | fread/fwrite, сериализация записей |
Начиная с ЛР2 программа обязательно разбивается на функции. Минимальный набор: ввод данных, вывод результата, обработка. Если вся логика осталась в main — оценка не выше 3 баллов.
Календарный план занятий
Ниже приводится приблизительный план занятий на этот семестр. План будет корректироваться исходя из изменений в расписании.
| Дата | Тип | Содержание |
|---|---|---|
| 10 сен. | Вводное | знакомство со средой, ЛР1: консольный и форматированный ввод-вывод, типы данных |
| 17 сен. | Практика | ЛР1: условия, ветвления, циклы |
| 24 сен. | Практика | ЛР1: одномерные массивы, ввод-вывод массива, обход по индексам |
| 1 окт. | Защита ЛР1 | защита первой лабораторной |
| 8 окт. | Практика | ЛР2: двумерные и трёхмерные массивы, вложенные циклы, обход по строкам, столбцам и слоям |
| 15 окт. | Практика | ЛР2: разбиение программы на функции, передача массивов в функции |
| 22 окт. | Защита ЛР2 | защита второй лабораторной |
| 29 окт. | Практика | ЛР3: динамическая память, указатели, структуры, списки |
| 5 ноя. | Практика | задачи по динамической памяти, указателям |
| 12 ноя. | Практика | задачи по структурам и спискам, подготовка к защите ЛР3 |
| 19 ноя. | Защита ЛР3 | защита третьей лабораторной |
| 26 ноя. | Практика | ЛР4: бинарные файлы |
| 3 дек. | Практика | задачи по бинарным файлам |
| 10 дек. | Практика | подготовка к защите ЛР4 |
| 17 дек. | Защита ЛР4 + зачёт | защита четвёртой работы, подведение итогов |
| 24 дек. | Интерактив | итоги семестра, ответы на вопросы, интерактив |
Система оценивания
Каждая работа оценивается от 0 до 5 баллов. Итог за семестр — среднее арифметическое четырёх оценок. Зачёт выставляется при среднем балле не менее 2.5.
Из чего складываются баллы:
- качество предварительно присланного кода: стиль, комментарии, обработка ошибок, полнота решения;
- выполнение индивидуального задания на защите;
- устные ответы на вопросы по теории и реализации.
Дополнительные баллы можно получить выполнением задания на добор после неудачной защиты — до +3 баллов.
Итоговый балл за работу не превышает 5.
Важные особые случаи:
- студент не может изменить или объяснить свой код — 0.5 балла;
- списывание (идентичный код, одинаковые ошибки, совпадающая структура) — 0.5 балла обеим сторонам;
- неявка на защиту без уважительных причин — 0 баллов;
- код не прислан к сроку — 0 баллов; сдачи с понижающим коэффициентом не предусмотрено.
Порядок защиты
Защита проходит в два этапа:
- Студент отправляет исходный код в установленный срок до даты защиты в специальную форму в личном кабинете.
- На защите выдаётся индивидуальное задание, которое заранее не известно. В течение 30 минут нужно внести изменения в свой код, после чего преподаватель проверяет результат, задаёт вопросы и выставляет оценку.
На защите запрещены интернет, готовые решения и любые источники, кроме оговорённых заранее.
Требования к оформлению кода
- комментарии: назначение программы, автор, ключевые блоки;
- осмысленные имена переменных и функций в стиле
snake_case(element_count,input_matrix), кроме счётчиковi,j; - имена констант —
UPPER_SNAKE_CASE(MAX_SIZE); - единый стиль отступов;
- фигурные скобки — на отдельных строках;
- каждый оператор — на новой строке;
- проверка корректности вводимых данных с сообщением и завершением при ошибке;
- начиная с ЛР2 — программа разбита на функции, прототипы объявлены до
main.
Несоблюдение этих требований может привести к снижению оценки.
Что делать, чтобы не потерять баллы
- Сдавайте код заранее, а не в последний час: срочно исправить не успеете.
- Пишите комментарии и понятные имена — это прямо входит в оценку.
- Не копируйте: одинаковый код легко заметить.
- Готовьтесь объяснять: на защите обязательно будет спрошено почему так написано.
- Тренируйтесь на малых примерах и проверяйте граничные случаи (
N = 1, пустые результаты, дубликаты). - С ЛР2 — не забывайте про разбиение на функции: даже корректная программа с логикой только в
mainполучит не выше 3 баллов.