Rules

Критерии оценки успеваемости

Успеваемость студента оценивается в баллах, на основе которых складывается промежуточная оценка (зачёт) и итоговая(экзамен). Баллы выставляются за лабораторные, домашние работы, тесты, посещаемость практик и лекций, проектную работу и за письменную и устную работу на зачёте и экзамене.

Правила начисления баллов

Пара состоит из двух половин по 45 минут. Студенту начисляется по одному баллу за присутствие на половине любой лекции или лабораторной работы, при условии, что он не опоздал на эту половину более, чем на 15 минут.
За выполнение лабораторных работ начисляются баллы, указанные в описании задачи.
В тестах за правильный ответ на вопрос начисляются баллы, указанные в описании вопроса.
Зачет и экзамен проводятся в виде письменной работы, в которой нужно дать развернутый ответ на вопросы.

Требования к выполнению лабораторных, домашних, проектных работ

  1. Каждая программа должна быть написана полностью самостоятельно.
  2. Каждая программа должна быть выполнена в соответствии с заданием. При возникновении вопросов необходимо консультироваться с преподавателем.
  3. Все программы должны быть представлены в виде исходных текстов.
  4. Программа должна быть хорошо протестирована до сдачи.
  5. Код программы должен компилироваться и исполняться без ошибок и предупреждений warning.
  6. Имена переменных следует выбирать в соответствии со смыслом (назначением), а не типом переменной.
  7. Имена переменных должны отражать суть данных, которые она содержит. Использование однобуквенных неясных названий для переменных считается сильным недостатком, кроме индексов, координат и других принятых математических обозначений.
  8. Имя метода или функции должно начинаться с глагола, отражающего суть выполняемого действия.
  9. Исходный код должен быть понятен без сопутствующих комментариев.
  10. Исходный код должен быть оформлен в соответствии с общепринятыми конвенциями оформления. Для языка C/С++ это стандарт Google C++ Style Guide.
  11. Как только была пройдена тема модульного тестирования все программы должны сопровождаться исчерпывающим набором тестов. На каждую функцию и метод должен быть написан набор тестов.
  12. Логика программ не должна быть смешана с логикой ввода данных. По умолчанию, если не оговорено иное, лабораторные не предполагают ввода данных через консоль, поэтому подтверждение работоспособности программы показывается модульными тестами.
  13. Запрещено использовать целочисленные переменные в тех случаях, когда предполагается использование Boolean типов.
  14. Время жизни переменной, объекта должно быть максимально коротким.
  15. Запрещено использовать не примитивные типы для значений аргументов функции или метода по умолчанию, если того не требует условие задания.
  16. Запрещено использование магических констант. Если необходимо, они должны быть именованными.
  17. Запрещено использовать жирные интерфейсы.
  18. Запрещено использовать иерархии классов глубины больше 3.
  19. Конструктор должен устанавливать инвариант класса.
  20. Запрещено использовать метки goto.
  21. Запрещено создание громоздких функций и методов размера более 30 строк. Такие конструкции следует разбивать на мелкие и понятные функции и методы.
  22. Наличие нескольких классов в одном файле считается сильным недостатком.
  23. Нельзя использовать глобальные переменные, только локальные автоматические, если это не требуется явно по заданию.
  24. Нельзя использовать статические переменные в Си, если это не требуется явно по заданию.
  25. К задание в лабораторной работе могут быть добавлены дополнительные ограничения для проверки конкретных навыков. Например, может быть ограничено использование циклов, рекурсии, условных операторов if, switch, классов или функций, глобальных переменных, замыканий, лямбд.

Приложение. Стиль оформления программа

Далее описаны основные пункты из Google C++ Style Guide. 1. Используйте проблемы для отступов. 2 пробела для одного уровня. 2. Имена переменным задаются в snake_case. Например, char* table_name. 3. Имена функциям задаются в UpperCamelCase. Например, AddTableEntry(). 4. Имена классов и структур задаются в UpperCamelCase. Например, IntersectionService. 5. Макросы задаются в CAPS_SNAKE_CASE. 6. Фигурная скобка начала блока функции, структуры, класс, операторов if/else/for/while и других ставится на той же строке, где и имя функции, класса, структуры, операторов, после пробела. Фигурная скобка закрывающая блок ставится всегда на новой строке. 7. Каждая переменные объявляется на новой строке. Не допускается сжатое объявление нескольких переменных в одной строке. 8. Между операторами и операндами ставится пробел. 9. При использовании операторов if/else/for/while всегда используйте фигурные скобки для обозначения блоков {}. 10. Остальные требования смотрите в стандарте Google C++ Style Guide.