Бакалавриат
2024/2025





Алгоритмизация и программирование
ID 819396
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Статус:
Курс обязательный (Информационная безопасность)
Направление:
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 module0.2 * Домашние задания + 0.2 * Работа на практических занятиях + 0.2 * Работа на семинарах + 0.2 * Проект + 0.2 * Экзамен
- 2024/2025 4th module0.5 * 2024/2025 2nd module + 0.1 * Работа на практических занятиях + 0.1 * Экзамен + 0.1 * Работа на семинарах + 0.1 * Проект + 0.1 * Домашние задания
Список литературы
Рекомендуемая основная литература
- Git для профессионального программиста, Чакон, С., 2016
- Алгоритмы: построение и анализ, Кормен, Т., 2011
- Введение в анализ алгоритмов - Солтис М. - Издательство "ДМК Пресс" - 978-5-97060-696-4 - 2019 - русский - https://e.lanbook.com/book/123707 - ЛАНЬ - 123707
- Изучаем Python, Лутц, М., 2014
- Изучаем Python. Т.1: ., Лутц, М., 2020
- Изучаем Python. Т.2: ., Лутц, М., 2020
- Программирование : принципы и практика с использованием С++, Страуструп, Б., 2018
- Трофимов, В. В. Алгоритмизация и программирование : учебник для академического бакалавриата / В. В. Трофимов, Т. А. Павловская ; под редакцией В. В. Трофимова. — Москва : Издательство Юрайт, 2019. — 137 с. — (Бакалавр. Академический курс. Модуль). — ISBN 978-5-534-07834-3. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/423824 (дата обращения: 28.08.2023).
- Язык программирования С++ : специальное издание, Страуструп, Б., 2015
Рекомендуемая дополнительная литература
- Python. Самое необходимое, Прохоренок, Н. А., 2015
- Алгоритмизация. Введение в язык программирования С++ - Белоцерковская И.Е., Галина Н.В., Катаева Л.Ю. - Национальный Открытый Университет "ИНТУИТ" - - - 2016 - русский - https://e.lanbook.com/book/100564 - ЛАНЬ - 100564
- Введение в программирование на Python - Северенс Ч. - Национальный Открытый Университет "ИНТУИТ" - - - 2016 - русский - https://e.lanbook.com/book/100703 - ЛАНЬ - 100703
- Осваиваем C++17 STL - О’Двайр А. - Издательство "ДМК Пресс" - 978-5-97060-663-6 - 2018 - русский - https://e.lanbook.com/book/116126 - ЛАНЬ - 116126