Бакалавриат
2026/2027





Алгоритмизация и программирование (углубленный курс)
Статус:
Курс обязательный (Информатика и вычислительная техника)
Кто читает:
Департамент компьютерной инженерии
Когда читается:
1-й курс, 1-4 модуль
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
8
Контактные часы:
190
Программа дисциплины
Аннотация
Дисциплина входит в Базовый профессиональный модуль (Major баз.) и осваивается на 1 курсе в модулях 1–4, являясь опорной профильной дисциплиной программы уровня ТОП ИТ «ПРО».
Её цель — формирование и развитие компетенций ППК-Р1 «Способен разрабатывать и отлаживать программный код» и ППК-Р3 «Способен выполнять интеграцию программных модулей и компонентов и проверять работоспособность выпусков программного продукта», а также ОПК-1, ОПК-2.
Содержание охватывает базовые алгоритмические конструкции языков C и C++, структуры данных, анализ вычислительной сложности, методы декомпозиции, отладку, тестирование и работу с системами контроля версий.
Отличительной чертой уровня «ПРО» является объём практической подготовки: более половины аудиторной нагрузки приходится на семинары и практические занятия, то есть на непосредственную работу с кодом, с обязательным код-ревью и ведением репозитория. Планируемые результаты обучения заданы Компетентностно-ролевой моделью ОП ИВТ и включают знание принципов разработки и отладки кода, умение писать и отлаживать программные модули, владение средствами отладки и Git.
Индустриальные партнёры предоставляют банк индустриальных кейсов, ТЗ на курсовой проект и наставников, что соответствует требованию уровня «ПРО» о работе студентов с реальными задачами индустрии с первого курса. Профессиональным результатом освоения является работоспособный программный продукт (модуль, сервис или приложение). Постреквизитами дисциплины выступают «Объектно-ориентированное программирование», «Базы данных» и «Компьютерная графика», что формирует сквозную линию инженерной подготовки разработчика.
Цель освоения дисциплины
- Сформировать систематизированные знания и практические навыки разработки алгоритмов и программ на C/C++ для решения инженерных и прикладных задач
- Освоить способы формализации задач и записи алгоритмов
- Изучить алгоритмические конструкции и методы обработки массивов, матриц и строк
- Сформировать навыки разработки программ на C и C++ без объектно-ориентированного проектирования
- Освоить указатели, функции и динамическое распределение памяти
- Получить навыки применения структур данных и базовых алгоритмов
- Освоить отладку, Git, CMake и Doxygen
- Изучить оценку временной и пространственной сложности
- Отработать сортировки и поиск в прикладных задачах
- Освоить модульную декомпозицию, обработку ошибок и тестирование
- Сформировать практику работы с файлами и структурами записей
- Освоить основы применения ИИ-инструментов для генерации и верификации кода
Планируемые результаты обучения
- Формулировать свойства алгоритма, базовые конструкции и способы записи
- Составлять постановку задачи, псевдокод и блок-схему
- Составлять нормальные, граничные и ошибочные тесты
- Реализовывать цикл постановки, кодирования и испытаний на учебной задаче
- Объяснять назначение IDE, компилятора, отладчика, CMake и Git.
- Отлаживать программу в GDB и вести учебный репозиторий.
- Описывать сборку в CMake и писать модульные тесты.
- Использовать Git, CMake и тесты при сдаче работ.
- Описывать хранение массивов и матриц и формулу построчного размещения
- Объяснять представление C-строки и назначение функций <string.h>
- Реализовывать поиск, преобразования массивов и операции над матрицами
- Использовать библиотеку проверяемого ввода и функции обработки массивов, матриц и строк
- Перечислять этапы трансляции, типы, операторы выбора и циклы языка C
- Использовать форматный ввод-вывод и проверять результат чтения
- Реализовывать программы на C с ветвлением и циклом
- Формулировать правила объявления функций, рекурсии, указателей, стека и кучи
- Передавать данные через параметры и указатели
- Выделять и освобождать память и выявлять типовые ошибки владения
- Реализовывать модульную программу с функциями, указателями и динамическими массивами
- Сравнивать простые и эффективные сортировки по устойчивости и требованиям к памяти
- Объяснять линейный и бинарный поиск и нотации сложности
- Реализовывать сортировку и поиск отдельными функциями и рассчитывать число операций
- Использовать собственные сортировки и поиск в лабораторной и контрольной работах
- Объяснять потоки, ссылки, пространства имен, перегрузку функций и параметры по умолчанию
- Использовать std::vector и std::string в процедурной программе
- Реализовывать процедурную декомпозицию средствами C++ без классов
- Описывать работу с текстовыми и бинарными файлами и модульную сборку
- Читать записи из файла, выявлять повреждённые строки и формировать отчет
- Разрабатывать README, описание программы, методику испытаний и комментарии к модулям с использованием систем автодокументирования
- Различать списки, стек, очередь, BST, кучу и хэш-таблицы
- Сравнивать представления графов и основные графовые алгоритмы
- Реализовывать операции списка, дерева, таблицы и обход графа
- Использовать эти структуры на несвязных и вырожденных данных
- Формулировать ограничения ИИ-ассистентов и связанные риски
- Составлять запрос к ИИ-ассистенту и проверять полученный код
- Использовать ИИ только как вспомогательное средство с обязательной верификацией
- Формулировать состав технического задания и критерии защиты проекта
- Проектировать декомпозицию проекта, проводить review и готовить демонстрацию
- Разрабатывать CLI-проект с процедурной архитектурой, Git, CMake, тестами и документацией
Содержание учебной дисциплины
- Введение в алгоритмизацию и формализацию задач
- Инструменты разработки, тестирования и Git
- Алгоритмы обработки массивов, матриц и строк
- Базовые конструкции языка C
- Функции, указатели и управление памятью в C
- Алгоритмы сортировки, поиска и оценка сложности
- Основы программирования на C++
- Файловый ввод/вывод, модульная декомпозиция и документирование кода
- Структуры данных: списки, деревья, графы, связанные структуры
- Применение ИИ-инструментов в программировании
- Реализация проекта
Элементы контроля
- Активность на лекциях 1
- Активность на семинарах 1
- Лабораторные работы 1
- Контрольная работа 1
- Экзамен 1
- Активность на лекциях 2
- Активность на семинарах 2
- Лабораторные работы 2
- Контрольная работа 2
- Экзамен 2
Промежуточная аттестация
- 2026/2027 2nd module0.35 * Лабораторные работы 1 + 0.2 * Контрольная работа 1 + 0.2 * Экзамен 1 + 0.15 * Активность на семинарах 1 + 0.1 * Активность на лекциях 1
- 2026/2027 4th module0.2 * Контрольная работа 2 + 0.35 * Лабораторные работы 2 + 0.15 * Активность на семинарах 2 + 0.1 * Активность на лекциях 2 + 0.2 * Экзамен 2
Список литературы
Рекомендуемая основная литература
- 45316 - CMake для С++. Современный подход - Р.Свидзиньски - ДМК Пресс - 9785937003263 - 2025 - https://hse.alpinadigital.ru/document/45316 - Alpina
- Git для профессионального программиста - 978-5-496-01763-3 - Чакон С., Штрауб Б. - 2016 - Санкт-Петербург: Питер - https://ibooks.ru/products/350532 - 350532 - iBOOKS
- Git для профессионального программиста, Чакон, С., 2016
- Парасич, И. В. Алгоритмический язык СИ. Примеры и задания. Часть 1 : учебное пособие для вузов / И. В. Парасич. — Санкт-Петербург : Лань, 2024. — 72 с. — ISBN 978-5-507-50035-2. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/434090 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
Рекомендуемая дополнительная литература
- Принципы юнит-тестирования - 978-5-4461-1683-6 - Владимир Хориков - 2021 - Санкт-Петербург: Питер - https://ibooks.ru/products/373514 - 373514 - iBOOKS
- Принципы юнит-тестирования, Хориков, В., 2022