• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

Algorithmization and Programming

2025/2026
Academic Year
RUS
Instruction in Russian
8
ECTS credits
Type:
Compulsory course
When:
1 year, 1-4 module

Instructors

Зиазетдинов Артур Айратович

Зиазетдинов Артур Айратович

Litvinenko, Aleksey

Litvinenko, Aleksey

Мирошниченко Лев Игоревич

Мирошниченко Лев Игоревич

Salibekyan, Sergey M.

Salibekyan, Sergey M.

Frolov, Kirill

Frolov, Kirill

Программа дисциплины

Аннотация

Курс «Алгоритмизация и программирование» предназначен для студентов бакалавриата по направлению «Информатика и ВТ». Курс направлен на изучение, освоение и умение применять в рамках своей специализации технологии структурного программирования, изучение базовых элементов языков C и C++,а также стандартных алгоритмов обработки различных структур данных. В курсе рассматриваются такие темы как: Введение. Основы алгоритмизации. Основные алгоритмические конструкции. Основные структуры данных. Сложность алгоритма. Циклы и примеры их использования Алгоритмы обработки одномерных массивов Алгоритмы обработки матриц Алгоритмы с досрочным выходом из цикла. Основные сведения о языках C\C++. Форматный ввод и вывод данных. Использование указателей при обработке массивов и матриц. Распределение памяти. Классы памяти. Функции в языке C. Символьный и строковый тип данных. Алгоритмы обработки строк. Динамическое распределение памяти. Динамические структуры. Также в курсе изучаются основы отладки алгоритмов в средах программирования и система контроля версий.
Цель освоения дисциплины

Цель освоения дисциплины

  • Освоение технологии структурного программирования
  • Изучение базовых элементов языков C и C++
  • Изучение стандартных алгоритмов обработки различных структур данных
  • Изучение приёмов разработки алгоритмов для обработки различных структур данных
Планируемые результаты обучения

Планируемые результаты обучения

  • Знает базовые конструкции (структуры) и базовые операции псевдокода.
  • Знает кодирование всех алгоритмических конструкций на языке С.
  • Знает основные приемы и особенности потокового ввода и вывода данных
  • Знает основные приемы работы со строками в языке С++
  • Знает основные приемы работы со структурами и файлами в языке С++
  • Знает основные сведения о языке С++.
  • Знает основные способы записи алгоритмов. Умеет записать постановку задачи
  • Знает основные типы связанных списков. Умеет формировать и обрабатывать линейные однонаправленные списки - стек и очередь, т.е применяет стандартные алгоритмы для работы с этим типом данных.
  • Знает понятие и назначение типа "указатель". Умеет использовать указатели при решении задач обработки массивов и матриц.
  • Знает понятие функции. Умеет передавать параметры по значению и по адресу. Умеет использовать указатель на указатель.
  • Знает понятия структуры и файлового типа. Умеет применять стандартные алгоритмы для решения задач обработки файлов и структур.
  • Знает структуру простой программы на языке С. Знает основные типы данных, базовые операции (арифметические, логические и операции присваивания). Умеет кодировать арифметические выражения на языке С.
  • Знает типы циклов и умеет правильно записать их на псевдокоде .Может выбрать тип цикла, который подходит для решения данной задачи. Может составить итерационный алгоритм и закодировать его.
  • Знает характеристики классов памяти и основные отличия между ними.
  • Умеет использовать алгоритмы с досрочным выходом из цикла для обработки массивов и матриц.
  • Умеет использовать алгоритмы сортировки, удаления, вставки элементов , поиска минимума или максимума , формирования нового массива для решения задач обработки одномерного массива.
  • Умеет использовать стандартные функции ввода и вывода данных
  • Умеет использовать стандартные функции для обработки символьных строк при решении задач. Умеет использовать алгоритмы обработки символьных сток при решении задач. Умеет использовать указатели для обработки символьных строк.
  • Умеет использовать функции выделения и освобождения памяти. Умеет формировать и обрабатывать связанные списки различных типов - линейные, циклические, одно и двунаправленные.
  • умеет осуществлять ввод и вывод матриц, а также использовать алгоритмы, изученные в теме 4 для обработки матриц.
  • Умеет формировать и обрабатывать бинарные деревья.
  • Умеет пользоваться различными средами программирования и отладки
  • Уметь вычислять сложность алгоритма
  • Умеет пользоваться системой контроля версий (Git)
  • Воспроизводить основные типы сортировки данных
  • Умеет применять основные типы данных С++
  • Умеет применять потоковый ввод и вывод
  • Применяет знание алгоритмов для программирования микроконтроллеров
  • Применяет изученные структуры данных на практике
  • Формулирует принципы ООП
  • Умеет применять средства ИИ для генерации кода или алгоритма. Умеет оценивать достоверность предоставляемых ИИ решений.
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Введение. Основы алгоритмизации.
  • Основные алгоритмические конструкции.
  • Циклы и примеры их использования.
  • Алгоритмы обработки одномерных массивов
  • Алгоритмы обработки матриц
  • Алгоритмы с досрочным выходом из цикла.
  • Основные сведения о языке C.
  • Конструкции языка C.
  • Форматный ввод и вывод данных.
  • Использование указателей при обработке массивов и матриц
  • Функции в языке C.
  • Распределение памяти. Классы памяти.
  • Символьный и строковый тип данных. Алгоритмы обработки строк
  • Структуры. Файлы в языке С.
  • Динамическое распределение памяти. Динамические структуры.
  • Основные сведения о языке C++
  • Потоковый ввод и вывод данных.
  • Преобразования при вычислении арифметических выражений. Приведение типов.
  • Структуры. Файлы в языке С++.
  • Строковый тип данных
  • Связанные списки. Алгоритмы обработки связанных списков
  • Бинарные деревья. Алгоритмы обработки бинарных деревьев
  • Инструменты разработки
  • Алгоритмы
  • Основы C++
  • Применение алгоритмов в микроконтроллерах
  • Структуры данных
  • Введение в ООП
  • Применение средств ИИ в алгоритмизации программировании
Элементы контроля

Элементы контроля

  • неблокирующий Экзамен. Модуль 4
  • неблокирующий Активность на лекциях. Модуль 3-4
  • неблокирующий Практические работы. Модуль 3-4
  • неблокирующий Контрольная работа. Модуль 3
  • неблокирующий Контрольная работа. Модуль 4
  • неблокирующий Экзамен 2 модуль
    Тест выполняется в smart lms в течение 60 минут. Оценивание автоматическое
  • неблокирующий Практические работы 1-2 модуль
    Лабораторные работы. Дедлайн на каждом втором занятии
  • неблокирующий Контрольная работа 2 модуль
    Контрольная работа на компьютере
  • неблокирующий Активность на лекциях и семинарах
Промежуточная аттестация

Промежуточная аттестация

  • 2025/2026 2nd module
    0.2 * Экзамен 2 модуль + 0.08 * Активность на лекциях и семинарах + 0.12 * Активность на лекциях и семинарах + 0.28 * Практические работы 1-2 модуль + 0.12 * Контрольная работа 2 модуль + 0.2 * Практические работы 1-2 модуль
  • 2025/2026 4th module
    0.15 * Контрольная работа. Модуль 4 + 0.15 * Контрольная работа. Модуль 3 + 0.15 * Активность на лекциях. Модуль 3-4 + 0.2 * Экзамен. Модуль 4 + 0.35 * Практические работы. Модуль 3-4
Список литературы

Список литературы

Рекомендуемая основная литература

  • Искусство программирования. Т. 4, А: Комбинаторные алгоритмы, часть 1, Кнут, Д. Э., 2013

Рекомендуемая дополнительная литература

  • Искусство программирования. Т.1: Основные алгоритмы, Кнут, Д. Э., 2011
  • Искусство программирования. Т.2: Получисленные алгоритмы, Кнут, Д. Э., 2012
  • Искусство программирования. Т.3: Сортировка и поиск, Кнут, Д. Э., 2012

Авторы

  • Назаров Игорь Васильевич
  • Зунин Владимир Викторович
  • Ерохина Елена Альфредовна
  • Американов Александр Александрович