Цель курса — ознакомить студентов с технологиями программирования с учётом профессиональной специализации и заложить базовые навыки, позволяющие разрабатывать программное обеспечение (ПО). В процессе требуется освоить базовую часть языка C++ в качестве основного языка программирования. Язык C++ выбран по двум причинам: дидактической и практической.
Дидактическая причина заключается в том, что хотя C++ и сравнительно сложен для новичков, он ориентирован на множество различных методологий программирования, позволяет покрыть достаточно широкий спектр технологий программирования, что закладывает фундамент, упрощающий в случае необходимости перепрофилирование на другие языки в процессе профессиональной деятельности.
Практическая причина проистекает из широты применения C++. Данный язык популярен там, где требуется сочетание низкоуровневых и высокоуровневых свойств, а также высокая производительность результирующего программного обеспечения — низкая задержка при получении результата (важно, например, для игр) или большой объём вычислений, которые можно выполнить за единицу времени (важно для научно-технических задач). Кроме того, доступно большое количество программных компонент, разработанных на C++. Компиляторы C++ существуют для большинства платформ, по распространённости поддержки языков программирования на различных платформах C++ занимает второе место (после C).
Данный курс является базовым для ряда других дисциплин аналогичной направленности, изучаемых на следующих курсах.
Содержание курса
Содержание данного ресурса разбито на две части: теоретическую и практическую (лабораторные и самостоятельные работы). Задача полного описания задействованных понятий, принципов и элементов языка программирования при составлении курса не ставилась, рекомендуется использовать дополнительную литературу.
Замечание. В тексте используются различные символы Юникода, например, ℝ для обозначения множества действительных чисел или символ ≡ для обозначения тождества. При неудачном стечении обстоятельств (отсутствии в системе шрифтов с широкой поддержкой Юникода) ряд символов может не отображаться, в этом случае рекомендуется установить такой шрифт (например см. список).
Знаком ⌛ помечены планируемые разделы, не включенные в текущую версию.
Теоретическая часть
В теоретической части курса излагается избранный ограниченный набор сведений, включая ряд определений базовых для практической части понятий, а также охватывающих программирование как дисциплину в целом. Более полное изложение затронутых тем предлагается можно найти в изданиях из списка рекомендованной литературы.
Главное правило: работать начинать надо сразу, сдавать всё в установленный срок.
Предусмотрено два типа работ: лабораторные и самостоятельные (7 в осеннем семестре и 6 в весеннем семестре).
Правила оценивания лабораторных работ
Каждая работа (результат выполнения одного варианта задания) оценивается независимо от остальных работ. Работа выполняется и представляется преподавателю на лабораторном занятии.
Оценка за каждую работу выставляется в диапазоне от 1 (“присутствовал на занятии”) до 4 (“работа выполнена”) баллов.
Финальный результат вычисляется как сумма результатов по всем работам. Максимальное значение этой суммы составляет 28 баллов.
Правила оценивания самостоятельных работ
Каждая работа (результат выполнения одного варианта задания) оценивается независимо от остальных работ. Работа может выполняться как на занятиях, так и дома, однако для получения оценки её необходимо представить лично.
Оценка выставляется в процентах от “идеального выполнения” и вычисляется как произведение трёх величин (коэффициентов): полноты, качества и срока исполнения (см. ниже).
Для каждой работы в течение семестра назначается свой крайний срок сдачи.
Коэффициент срока исполнения выбирается из четырёх возможных значений:
1.0 в случае исполнения работы в срок,
0.84 — менее двух недель сверх срока,
0.67 — менее трёх недель сверх срока,
0.5 — три и более недель сверх срока.
Полнота оценивается в диапазоне [0, 1] как степень соответствия предъявляемым в формулировке задания требованиям.
Качество оценивается в диапазоне [0.5, 2] с точки зрения качества предъявленного исходного кода (в частности, оценка может быть понижена за слишком неряшливое оформление и использование бессмысленных названий), эффективности используемых алгоритмов, разумности выбранных программных решений.
Финальный результат вычисляется как сумма произведений “процентных” оценок работ за семестр на их фиксированные “стоимости” в баллах (указаны в начале описания каждой самостоятельной работы).
Итоговый результат за семестр
Итоговый результат за семестр вычисляется как сумма баллов за лабораторные работы, самостоятельные работы и работу на практических занятиях (по 2 балла за выполнение одного задания у доски).
Для допуска к экзамену необходимо набрать 40 баллов или выше.
При получении более 100 баллов в БРС выставляется 100 баллов, а остаток делится на два и переносится в следующий семестр.
Аттестация в середине семестра
Для получения аттестации требуется набрать 24 балла.
Список рекомендованной литературы
C и C++
С.Прата. Язык программирования C++. Лекции и упражнения. 6-е изд. — М.: Вильямс, 2012. — 1244с.
Б.Эккель. Философия C++. Введение в стандартный C++. 2-е изд. — СПб.: Питер, 2004. — 572с.
Б.Керниган, Д.Ритчи. Язык программирования Си. 3-е изд., испр. — СПб.: «Невский Диалект», 2001. — 352с.
С.Прата. Язык программирования C. Лекции и упражнения. 5-е изд. — М.: Вильямс, 2006. — 960с.
Б.Страуструп. Программирование. Принципы и практика использования C++. 2-е изд. — М.: Вильямс, 2016. — 1328с.
А.Степанов, П.Мак-Джоунс. Начала программирования. — М.: Вильямс, 2011. — 272с.
Д.Роуз, А.А.Степанов. От математики к обобщенному программированию. — М.: ДМК Пресс, 2015. — 264с.
Теоретические основы
А.А.Марков, Н.М.Нагорный. Теория алгорифмов. 2-е изд. — М.: ФАЗИС, 2001. — 448с.