• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2024/2025

Алгоритмизация и программирование

Статус: Курс обязательный (Информационная безопасность)
Направление: 10.03.01. Информационная безопасность
Когда читается: 1-й курс, 1-4 модуль
Формат изучения: без онлайн-курса
Охват аудитории: для своего кампуса
Язык: русский
Кредиты: 10

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

Аннотация

Курс "Алгоритмизация и программирование" направлен на формирование навыков применения стандартных алгоритмов и различных структур данных для решения практико-ориентированных задач, умение использовать стандартное программное обеспечение в своей профессиональной деятельности.
Цель освоения дисциплины

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

  • Введение в теорию сложности алгоритмов
  • − освоение технологии структурного программирования;
  • Изучение основных подходов к проектированию алгоритмов
  • − изучение базовых элементов языков Python и C/C++;
  • Изучение основных структур данных
  • − изучение стандартных алгоритмов обработки различных структур данных;
  • изучение базовых элементов языков Python и C++
  • − изучение приёмов разработки алгоритмов для обработки различных структур данных.
Планируемые результаты обучения

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

  • Знает алгоритмы поиска и сортировки с наименьшей асимптотической сложностью.
  • Знает определения Тьюринг-полноты и NP-полноты.
  • Знает основные коллекции и алгоритмы стандартной библиотеки.
  • Знает основные структуры данных, такие как очередь, список, хеш-таблица, красно-чёрное дерево.
  • Знает основы языка программирования C++.
  • Знает основы языка программирования Python.
  • Понимает внутреннее устройство большей части алгоритмов из стандартной библиотеки.
  • Умеет выбрать подходящую структуру данных для решения конкретной задачи.
  • Умеет использовать динамическое программирование и метод «разделяй и властвуй» для проектирования алгоритмов.
  • Умеет использовать основные конструкции языка, такие как ветвления циклы, generator expressions.
  • Умеет оценивать сложность алгоритмов.
  • Умеет реализовывать свои функции и классы.
  • Умеет реализовывать свои функции и классы.
  • Знает основные принципы работы системы контроля версий Git. Понимает и умеет применять механизмы ветвления и совместной разработки, в т.ч. с использованием удалённого репозитория.
  • Знает основные принципы покрытия исходного кода unit-тестами. Умеет применять фреймворки для unit-тестирования в разработке ПО. Понимает основы mock-тестирования, владеет соответствующими инструментами.
  • Понимает основные принципы написания документации к исходному коду ПО. Владеет средствами генерации документации.
  • Понимает основные принципы компиляции и интерпретации исходных кодов ПО. Владеет инструментами сборки и запуска программ на ЯП C++ и Python. Умеет использовать сторонние модули и библиотеки в ходе разработки собственного ПО.
  • Владеет навыками отладки разрабатываемого ПО. Знает основные функции отладчика. Умеет применять отладчик для поиска и корректировки ошибок в исходном коде ПО.
Содержание учебной дисциплины

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

  • Тема 1. Алгоритмы и их сложность. Алгоритмы поиска и сортировки.
  • Тема 2. Основные методы проектирования алгоритмов.
  • Тема 3. Структуры данных.
  • Тема 4. Общая теория сложности задач
  • Тема 5. Python.
  • Тема 6. C++
  • Тема 7. Инструменты разработки ПО.
Элементы контроля

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

  • неблокирующий Домашние задания
  • блокирующий Проект
  • неблокирующий Экзамен
  • неблокирующий Экзамен
  • неблокирующий Работа на семинарах
  • неблокирующий Работа на практических занятиях
Промежуточная аттестация

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

  • 2024/2025 2nd module
    0.2 * Домашние задания + 0.2 * Проект + 0.2 * Работа на практических занятиях + 0.2 * Работа на семинарах + 0.2 * Экзамен
  • 2024/2025 4th module
    0.5 * 2024/2025 2nd module + 0.1 * Домашние задания + 0.1 * Проект + 0.1 * Работа на практических занятиях + 0.1 * Работа на семинарах + 0.1 * Экзамен
Список литературы

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

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

  • Git для профессионального программиста, Чакон, С., 2016
  • Алгоритмы: построение и анализ, Кормен, Т., 2011
  • Изучаем Python, Лутц, М., 2014
  • Изучаем Python. Т.1: ., Лутц, М., 2020
  • Изучаем Python. Т.2: ., Лутц, М., 2020
  • Программирование : принципы и практика с использованием С++, Страуструп, Б., 2018
  • Солтис, М. Введение в анализ алгоритмов / М. Солтис , перевод с английского А. В. Логунова. — Москва : ДМК Пресс, 2019. — 278 с. — ISBN 978-5-97060-696-4. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/123707 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
  • Трофимов, В. В.  Алгоритмизация и программирование : учебник для академического бакалавриата / В. В. Трофимов, Т. А. Павловская ; под редакцией В. В. Трофимова. — Москва : Издательство Юрайт, 2019. — 137 с. — (Бакалавр. Академический курс. Модуль). — ISBN 978-5-534-07834-3. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/423824 (дата обращения: 28.08.2023).
  • Язык программирования С++ : специальное издание, Страуструп, Б., 2015

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

  • Python. Самое необходимое, Прохоренок, Н. А., 2015
  • Белоцерковская, И. Е. Алгоритмизация. Введение в язык программирования С++ : учебное пособие / И. Е. Белоцерковская, Н. В. Галина, Л. Ю. Катаева. — 2-е изд. — Москва : ИНТУИТ, 2016. — 196 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100564 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
  • О’Двайр, А. Осваиваем C++17 STL / А. О’Двайр. — Москва : ДМК Пресс, 2018. — 352 с. — ISBN 978-5-97060-663-6. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/116126 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
  • Северенс, Ч. Введение в программирование на Python : учебное пособие / Ч. Северенс. — 2-е изд. — Москва : ИНТУИТ, 2016. — 231 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100703 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.

Авторы

  • Морозов Владимир Игоревич
  • Байдин Георгий Сергеевич
  • Подшивалов Ярослав Олегович
  • Евсютин Олег Олегович
  • Дерендяев Александр Борисович
  • Аксенова Ольга Вениаминовна
  • Крещук Алексей Андреевич