• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 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 module
    0.35 * Лабораторные работы 1 + 0.2 * Контрольная работа 1 + 0.2 * Экзамен 1 + 0.15 * Активность на семинарах 1 + 0.1 * Активность на лекциях 1
  • 2026/2027 4th module
    0.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

Авторы

  • Американов Александр Александрович
  • Зунин Владимир Викторович