Бакалавриат
2021/2022
Алгоритмизация и программирование
Статус:
Курс обязательный (Прикладная математика)
Направление:
01.03.04. Прикладная математика
Кто читает:
Департамент прикладной математики
Когда читается:
2-й курс, 1, 4 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
6
Контактные часы:
28
Программа дисциплины
Аннотация
Дисциплина «Алгоритмизация и программирование» призвана обучить студентов принципам функционирования информационных технологий, базовым концепциям технологий программирования и эффективных реализаций алгоритмов. Теоретический материал курса подкрепляется практическими занятиями по программированию (курс «Компьютерный практикум») в целях реализации предлагаемых заданий в рамках изучаемой тематики. Дисциплина относится к профессиональному учебному циклу (Б.3) и блоку дисциплин, обеспечивающих базовую (общепрофессиональную) подготовку. Для освоения учебной дисциплины, студенты должны изучить следующие учебные курсы: Линейная алгебра и аналитическая геометрия (1 курс); Математический анализ (1 курс); Алгоритмизация и программирование (1 курс); Компьютерный практикум (1 курс); Теория вероятностей и математическая статистика (2 курс). Для освоения учебной дисциплины, студенты должны владеть следующими знаниями и компетенциями: Владеть основами программирования на языке С; Знать методы и базовые алгоритмы обработки информационных структур, методы анализа сложности алгоритмов. Основные положения дисциплины и освоенные компетенции должны быть использованы в дальнейшем при изучении дисциплин: Компьютерный практикум (3 курс); Операционные системы (3 курс); Базы данных (3 курс); Численные методы (3-4 курсы); Проект и/или Междисциплинарная курсовая работа (3 курс).
Цель освоения дисциплины
- Знакомство слушателей дисциплины с основными парадигмами и теоретическими основами программирования, терминологией объектно-ориентированного программирования
- Ознакомление студентов с методами решения прикладных задач и их реализации на языке программирования Си.
- Формирование представления о возможностях и особенностях объектно-ориентированных языков программирования при проектировании, разработке и отладке компьютерных программ
- Изучение теоретических основ программирования, методов реализации алгоритмов различного типа, базовых принципов объектно-ориентированного программирования, основных подходов машинного обучения
- Выработка навыков и умений программирования на языке С++ с применением широко используемых библиотек
- Получение опыта работы с механизмами статического полиморфизма, такими как шаблоны функций и классов; поиска эффективных реализаций различных алгоритмов, практических навыков разработки прикладных программ, в том числе для методов анализа данных
Планируемые результаты обучения
- Владеет основными шаблонами проектирования, понимает принципы их реализации и использования в разных языках программирования.
- Владение семейством функций стандартной библиотеки языка Си.
- Знание основных парадигм программирования и общих принципов разработки ПО.
- Навыки программного создания, чтения и изменения файлов на языке Си.
- Навыки работы со статической и динамической памятью на языке Си.
- Написание простейших программ на языке Си.
- Определение пользовательских типов данных и операций над ними.
- Понимание основных методов сортировки данных и критериев их эффективности.
- Реализация некоторых абстрактных типов данных на языке Си.
- Реализация пользовательских функций на языке Си.
- Способен проектировать и реализовывать систему с множеством связанных объектов на основе концепции ООП в С++.
- Способен реализовать программу на языке С++ по заданному алгоритму.
- Способен реализовать программу на языке С++ с использованием контейнеров и алгоритмов стандартной библиотеки, шаблонов и обработкой всех видов исключений.
Содержание учебной дисциплины
- Базовые понятия и конструкции языка Си. Препроцессорные директивы.
- Парадигмы программирования. Общие принципы разработки программного обеспечения.
- Функции.
- Введение в программирование на С++.
- Указатели, массивы, строки. Статическая и динамическая память.
- Обработка исключений. Знакомство с библиотекой STL.
- Организация ввода/вывода в языке Си. Файлы.
- ООП в С++. Наследование, виртуальные функции, полиморфизм. Шаблоны.
- Стандартная библиотека языка Си.
- Структурные типы данных языка Си.
- Паттерны проектирования.
- Абстрактные типы данных.
- Алгоритмы сортировки и поиска данных.
Элементы контроля
- Контрольная работа
- Промежуточный экзамен
- Итоговый письменный экзаменЭкзамен проводится в письменной форме (эссе) с использованием асинхронного прокторинга. Экзамен проводится на платформе Moodle (https://et.hse.ru/login/index.php), прокторинг на платформе Экзамус (https://hse.student.examus.net). К экзамену необходимо подключиться за 15 минут. На платформе Экзамус доступно тестирование системы. Компьютер студента должен удовлетворять следующим требованиям: https://elearning.hse.ru/data/2020/05/07/1544135594/Технические%20требования%20к%20ПК%20студента.pdf) Для участия в экзамене студент обязан: заранее зайти на платформу прокторинга, провести тест системы, включить камеру и микрофон, подтвердить личность. Во время экзамена студентам запрещено: общаться (в социальных сетях, с людьми в комнате), списывать, искать информацию в сети. Во время экзамена студентам разрешено: пользоваться собственными письменными конспектами (в тетради или на распечатанных листах), выйти по необходимости не более, чем на 5 минут. Кратковременным нарушением связи во время экзамена считается прерывание связи до 5 минут. Долговременным нарушением связи во время экзамена считается прерывание связи 5 минут и более. При долговременном нарушении связи студент не может продолжить участие в экзамене. Процедура пересдачи аналогична процедуре сдачи.
- Аудиторная работа
- Домашнее задание
- Лабораторные работыСреднее арифметическое оценок за все выполненные лабораторные работы.
- КИМКИМ
- Аудиторная работа
- Лабораторнче работы
- Экзамен (1 модуль)
- Экзамен (4 модуль)
Промежуточная аттестация
- 2020/2021 учебный год 2 модуль0.04 * Домашнее задание + 0.04 * Контрольная работа + 0.6 * Промежуточный экзамен + 0.04 * Аудиторная работа + 0.28 * Лабораторные работы
- 2020/2021 учебный год 4 модуль0.02 * Контрольная работа + 0.02 * Аудиторная работа + 0.16 * Лабораторные работы + 0.6 * Итоговый письменный экзамен + 0.2 * 2020/2021 учебный год 2 модуль
- 2021/2022 учебный год 1 модуль0.25 * Аудиторная работа + 0.5 * Экзамен (1 модуль) + 0.25 * Лабораторнче работы
- 2021/2022 учебный год 4 модуль0.7 * Экзамен (4 модуль) + 0.3 * 2021/2022 учебный год 1 модуль
Список литературы
Рекомендуемая основная литература
- Курс программирования на языке Си : учебник для вузов, Подбельский, В. В., 2018
- Практикум по программированию на языке СИ : учебное пособие, Подбельский, В. В., 2004
- Язык программирования 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