Бакалавриат
2021/2022
Алгоритмизация и программирование
Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Статус:
Курс обязательный (Информационная безопасность)
Направление:
10.03.01. Информационная безопасность
Кто читает:
Департамент электронной инженерии
Когда читается:
1-й курс, 1-4 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Преподаватели:
Байдин Георгий Сергеевич,
Дерендяев Александр Борисович,
Крещук Алексей Андреевич,
Морозов Владимир Игоревич,
Подшивалов Ярослав Олегович
Язык:
русский
Кредиты:
12
Контактные часы:
140
Программа дисциплины
Аннотация
Курс "Алгоритмизация и программирование" направлен на формирование навыков применения стандартных алгоритмов и различных структур данных для решения практико-ориентированных задач, умение использовать стандартное программное обеспечение в своей профессиональной деятельности.
Цель освоения дисциплины
- Введение в теорию сложности алгоритмов
- − освоение технологии структурного программирования;
- Изучение основных подходов к проектированию алгоритмов
- − изучение базовых элементов языков Python и C/C++;
- Изучение основных структур данных
- − изучение стандартных алгоритмов обработки различных структур данных;
- изучение базовых элементов языков Python и C++
- − изучение приёмов разработки алгоритмов для обработки различных структур данных.
Планируемые результаты обучения
- Знает алгоритмы поиска и сортировки с наименьшей асимптотической сложностью.
- Знает определения Тьюринг-полноты и NP-полноты.
- Знает основные коллекции и алгоритмы стандартной библиотеки.
- Знает основные структуры данных, такие как очередь, список, хеш-таблица, красно-чёрное дерево.
- Знает основы языка программирования C++.
- Знает основы языка программирования Python.
- Понимает внутреннее устройство большей части алгоритмов из стандартной библиотеки.
- Умеет выбрать подходящую структуру данных для решения конкретной задачи.
- Умеет использовать динамическое программирование и метод «разделяй и властвуй» для проектирования алгоритмов.
- Умеет использовать основные конструкции языка, такие как ветвления циклы, generator expressions.
- Умеет оценивать сложность алгоритмов.
- Умеет реализовывать свои функции и классы.
- Умеет реализовывать свои функции и классы.
Содержание учебной дисциплины
- Тема 1. Алгоритмы и их сложность. Алгоритмы поиска и сортировки.
- Тема 2. Основные методы проектирования алгоритмов.
- Тема 3. Структуры данных.
- Тема 4. Общая теория сложности задач
- Тема 5. Python.
- Тема 6. C++
Элементы контроля
- Домашние задания
- Дистанционный устный экзаменПреподаватель вправе освободить от прохождения экзамена студентов, с выставлением им во время сессии оценки по промежуточной аттестации, соответствующей накопленной оценке без учёта веса экзамена (то есть сумма весов всех элементов контроля, за исключением экзамена, приравнивается к единице). Преподаватель объявляет свое решение не позднее, чем на последнем занятии до экзамена. Для объявления оценок могут быть использованы официальные каналы передачи информации, используемые в процессе обучения. По желанию студентов, они могут отказаться от выставления оценки без проведения экзамена и сдать его, о чем сообщают преподавателю не позднее последнего занятия. Экзамен проводится в устной форме (опрос по материалам курса). Экзамен проводится на платформе Jitsi https://meet.miem.hse.ru К экзамену необходимо подключиться согласно расписанию ответов. Компьютер студента должен удовлетворять требованиям: наличие рабочей камеры и микрофона, поддержка Jitsi. Для участия в экзамене студент обязан: поставить на аватар свою фотографию, явиться на экзамен согласно точному расписанию, при ответе включить камеру и микрофон. Во время экзамена студентам запрещено: выключать камеру, пользоваться конспектами и подсказками. Кратковременным нарушением связи во время экзамена считается нарушение связи менее минуты. Долговременным нарушением связи во время экзамена считается нарушение более одной минуты. При долговременном нарушении связи студент не может продолжить участие в экзамене.
- Групповой проектДистанционный формат со 2-го модуля.
- Домашние задания3 и 4 модули
- Групповой проект3 и 4 модули
- Письменный экзамен3 и 4 модули
Промежуточная аттестация
- 2021/2022 учебный год 2 модуль0.4 * Домашние задания + 0.2 * Дистанционный устный экзамен + 0.4 * Групповой проект
- 2021/2022 учебный год 4 модуль0.5 * 2021/2022 учебный год 2 модуль + 0.2 * Домашние задания + 0.2 * Дистанционный устный экзамен + 0.1 * Групповой проект
Список литературы
Рекомендуемая основная литература
- Алгоритмы: построение и анализ, Кормен, Т., 2011
- Белоцерковская, И. Е. Алгоритмизация. Введение в язык программирования С++ : учебное пособие / И. Е. Белоцерковская, Н. В. Галина, Л. Ю. Катаева. — 2-е изд. — Москва : ИНТУИТ, 2016. — 196 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100564 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Изучаем Python, Лутц, М., 2014
- Программирование : принципы и практика с использованием С++, Страуструп, Б., 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/book/algoritmizaciya-i-programmirovanie-423824
Рекомендуемая дополнительная литература
- Python. Самое необходимое, Прохоренок, Н. А., 2015
- Северенс, Ч. Введение в программирование на Python : учебное пособие / Ч. Северенс. — 2-е изд. — Москва : ИНТУИТ, 2016. — 231 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100703 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Язык программирования С++ : специальное издание, Страуструп, Б., 2015