• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 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

Авторы

  • Петрухина Анастасия Сергеевна