Бакалавриат
2024/2025
Алгоритмизация и программирование
Статус:
Курс обязательный (Прикладная математика)
Направление:
01.03.04. Прикладная математика
Кто читает:
Департамент прикладной математики
Когда читается:
1-й курс, 1-4 модуль
Формат изучения:
с онлайн-курсом
Онлайн-часы:
30
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
6
Контактные часы:
130
Программа дисциплины
Аннотация
Целями освоения дисциплины Алгоритмизация и программирование является ознакомление студентов с методами решения прикладных задач и их реализации на языке программирования Си и С++. В процессе изучения дисциплины студенты приобретают навыки проектирования и разработки программных приложений, которые будут использоваться при выполнении различных заданий и работ по дисциплинам, изучаемым на последующих курсах. В результате освоения дисциплины студент должен знать:
1) Основы информатики.
2) Основные структуры данных и методы их обработки.
3) Различия между языками программирования высокого и низкого уровня.
4) Язык программирования Си и возможности стандартной библиотеки.
5) Язык программирования С++ и возможности стандартной библиотеки.
6) Инструменты разработки: git и cmake.
Должен уметь:
1) Формализовать прикладную задачу, выбирать для неё подходящие структуры данных и алгоритмы решения.
2) Программировать алгоритмы, используя средства языка Си и С++.
3) Разрабатывать тестовые случаи и сценарии.
Иметь навыки (приобрести опыт):
1) В разработке программ на языке Си и С++.
2) В проведении отладки и тестирования разработанных программ.
3) В проведении анализа получаемых результатов и оформлении сопроводительной документации на программы.
4) Организация проекта с использованием git и cmake.
Изучение данной дисциплины базируется на следующих дисциплинах: Линейная алгебра; Математический анализ; Дискретная математика.
Для освоения учебной дисциплины, студенты должны владеть следующими знаниями и компетенциями: знать основы информатики и ИКТ; знать основы линейной алгебры; знать элементы математической логики; уметь использовать программные и аппаратные средства информатики.
Цель освоения дисциплины
- Ознакомление студентов с методами решения прикладных задач и их реализации на языке программирования Си.
- Освоение основ объектно-ориентированного программирования на языке С++
Планируемые результаты обучения
- Владеет основными шаблонами проектирования, понимает принципы их реализации и использования в разных языках программирования.
- Навыки программного создания, чтения и изменения файлов на языке Си.
- Навыки работы со статической и динамической памятью на языке Си.
- Написание простейших программ на языке Си.
- Определение пользовательских типов данных и операций над ними.
- Понимание основных методов сортировки данных и критериев их эффективности.
- Реализация некоторых абстрактных типов данных на языке Си.
- Реализация пользовательских функций на языке Си.
- Способен проектировать и реализовывать систему с множеством связанных объектов на основе концепции ООП в С++.
- Способен реализовать программу на языке С++ по заданному алгоритму.
- Способен реализовать программу на языке С++ с использованием контейнеров и алгоритмов стандартной библиотеки, шаблонов и обработкой всех видов исключений.
- Умеет создавать приложения с 2D графическим интерфейсом.
- Умеет организовывать программные проекты с помощью системы сборки cmake.
- Умеет пользоваться системой контроля версий для версионирования разрабатываемого ПО.
Содержание учебной дисциплины
- Функции.
- Базовые понятия и конструкции языка Си. Препроцессорные директивы.
- Указатели, массивы, строки. Статическая и динамическая память.
- Организация ввода/вывода в языке Си. Файлы.
- Структурные типы данных языка Си.
- Алгоритмы сортировки и поиска данных.
- Абстрактные типы данных.
- Введение в программирование на С++.
- Обработка исключений. Знакомство с библиотекой STL.
- ООП в С++. Наследование, виртуальные функции, полиморфизм. Шаблоны.
- Паттерны проектирования.
- 2D Графика
- Cmake
- Git
- Подготовка к независимому экзамену по программированию
Элементы контроля
- ЛР1
- ЛР2
- Экзамен1
- Экзамен2
- ЛР1 (С++)
- ЛР2 (С++)
- ЛР3 (С++)
- Аудиторная работа 1
- Аудиторная работа 2
- Экзамен3
- Экзамен4
Промежуточная аттестация
- 2024/2025 2nd module0.4 * ЛР1 + 0.6 * Экзамен1
- 2024/2025 4th module0.4 * ЛР2 + 0.6 * Экзамен2
- 2025/2026 1st module0.2 * Аудиторная работа 1 + 0.4 * ЛР1 (С++) + 0.4 * Экзамен3
- 2025/2026 3rd module0.2 * Аудиторная работа 2 + 0.2 * ЛР2 (С++) + 0.2 * ЛР3 (С++) + 0.4 * Экзамен4
Список литературы
Рекомендуемая основная литература
- Белоцерковская, И. Е. Алгоритмизация. Введение в язык программирования С++ : учебное пособие / И. Е. Белоцерковская, Н. В. Галина, Л. Ю. Катаева. — 2-е изд. — Москва : ИНТУИТ, 2016. — 196 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100564 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Конова, Е. А. Алгоритмы и программы. Язык С++ : учебное пособие для вузов / Е. А. Конова, Г. А. Поллак. — 6-е изд., стер. — Санкт-Петербург : Лань, 2021. — 384 с. — ISBN 978-5-8114-8487-4. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/176900 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Курс программирования на языке Си : учебник для вузов, Подбельский, В. В., 2018
- Практикум по программированию на языке СИ : учебное пособие, Подбельский, В. В., 2004
- Седжвик, Р. Алгоритмы на С++ : учебное пособие / Р. Седжвик. — 2-е изд. — Москва : ИНТУИТ, 2016. — 1772 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100565 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Язык программирования C++, Страуструп, Б., 2012
- Язык программирования, Керниган, Б., 2012
Рекомендуемая дополнительная литература
- Freeman, E., Freeman, E., Sierra, K., & Bates, B. (2004). Head First Design Patterns : A Brain-Friendly Guide. Sebastopol, CA: Reilly - O’Reilly Media. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=415229
- Алгоритмы и структуры данных, Вирт, Н., 2001