Бакалавриат
2022/2023
Алгоритмы и алгоритмические языки
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Статус:
Курс обязательный (Программная инженерия)
Направление:
09.03.04. Программная инженерия
Где читается:
Факультет компьютерных наук
Когда читается:
1-й курс, 1, 2 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Преподаватели:
Белеванцев Андрей Андреевич,
Гребнев Николай Юрьевич,
Егоров Данила Игоревич,
Иконникова Мария Кирилловна,
Терлыч Никита Андреевич
Язык:
русский
Кредиты:
5
Контактные часы:
120
Программа дисциплины
Аннотация
Курс является первой частью годового базового курса программирования, целью которого является заложить системные основы понимания архитектуры компьютера, основ теории алгоритмов, базовых алгоритмов и структур данных. В качестве языка программирования для этого используется язык С. Изучаются самые вводные понятия теории алгоритмов (формализации алгоритмов, алгоритмическая неразрешимость, универсальный вычислитель), язык программирования С, а также основные структуры данных (списки, деревья, хеш-таблицы) и соответствующие алгоритмы (сортировка, поиск).
Цель освоения дисциплины
- ● Знать базовые понятия теории алгоритмов
- ● Знать основы языка С, в том числе утилиты сборки – компилятор, компоновщик
- ● Знать базовые алгоритмы и структуры данных
- ● Научиться писать и отлаживать программы на С, понимать, какие структуры данных использовать, какова сложность работы с ними
Содержание учебной дисциплины
- Цели и задачи курса. Характеристика разделов курса.
- Структура программного файла. Системные библиотеки и их использование. Описание Си-машины. Типы данных языка Си.
- Приведение типов при вычислении выражений (явное и неявное). Операторы: выражение-оператор, составный оператор, условный оператор, оператор выбора, циклы, оператор перехода.
- Обработка строк. Операция sizeof. Указатели. Адресная арифметика.
- Возврат из функции. Рекурсия. Хвостовая рекурсия. Встраивание функций. Указатели на функцию.
- Схема компиляции программ на языке Си. Препроцессор. Директивы препроцессора. Динамическое выделение и освобождение памяти.
- Инструменты поиска ошибок с динамической памятью. Представление данных с плавающей точкой. Стандарт IEEE 754.
- Организация типа данных «стек» на динамической памяти. Реализация стека как библиотеки. Использование стека для построения обратной польской записи.
- Простейшие алгоритмы сортировки (выбором, вставками, обменами). Оценка сложности алгоритмов сортировки.
- "Прошитое" двоичное дерево и его обход. Двоичные деревья поиска и операции над ними.
- Красно-черные деревья, их высота и вставка в красно-черное дерево.
- Хеширование. Хеширование цепочками.
Элементы контроля
- Самостоятельная работаДве самостоятельные работы в модуле.
- Контрольная работаОдна контрольная работа в 1-м модуле. Две контрольные работы во 2-м модуле.
- Домашние заданияПо три домашних задания в 1-м и 2-м модулях.
- Итоговый экзаменЭкзамен состоит из нескольких задач (обычно между 8 и 12). Каждая задача оценивается в некоторое количество баллов. Оценка за экзамен вычисляется как сумма баллов по всем решенным задачам, поделенная на сумму баллов по всем задачам.
Промежуточная аттестация
- 2022/2023 учебный год 1 модульП1 = 1/8*(С1 + С2) + 1/4*K1 + 1/6*(ДЗ1 + ДЗ2 + ДЗ3)
- 2022/2023 учебный год 2 модульП2 = 4/7*Э + 3/28*(К2 + К3) + 1/14*(ДЗ4+ДЗ5+ДЗ6)
Список литературы
Рекомендуемая основная литература
- Керниган, Б. В. Язык программирования C : учебник / Б. В. Керниган, Д. М. Ричи. — 2-е изд. — Москва : ИНТУИТ, 2016. — 313 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100543 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
Рекомендуемая дополнительная литература
- Алгоритмы : построение и анализ, 2-е изд., 1290 с., Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К., 2012