• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

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

2019/2020
Учебный год
RUS
Обучение ведется на русском языке
6
Кредиты
Статус:
Курс обязательный
Когда читается:
2-й курс, 1, 4 модуль

Преподаватели

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

Аннотация

Дисциплина «Алгоритмизация и программирование» призвана обучить студентов принципам функционирования информационных технологий, базовым концепциям технологий программирования и эффективных реализаций алгоритмов. Теоретический материал курса подкрепляется практическими занятиями по программированию (курс «Компьютерный практикум») в целях реализации предлагаемых заданий в рамках изучаемой тематики. Дисциплина относится к профессиональному учебному циклу (Б.3) и блоку дисциплин, обеспечивающих базовую (общепрофессиональную) подготовку. Для освоения учебной дисциплины, студенты должны изучить следующие учебные курсы: • Линейная алгебра и аналитическая геометрия (1 курс); • Математический анализ (1 курс); • Алгоритмизация и программирование (1 курс); • Компьютерный практикум (1 курс); • Теория вероятностей и математическая статистика (2 курс) Для освоения учебной дисциплины, студенты должны владеть следующими знаниями и компетенциями: • Владеть основами программирования на языке С. • Знать методы и базовые алгоритмы обработки информационных структур, методы анализа сложности алгоритмов. Основные положения дисциплины и освоенные компетенции должны быть использованы в дальнейшем при изучении дисциплин: • Компьютерный практикум (3 курс) • Операционные системы (3 курс) • Базы данных (3 курс) • Численные методы (3-4 курсы) • Междисциплинарная курсовая работа (3 курс)
Цель освоения дисциплины

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

  • Знакомство слушателей дисциплины с основными парадигмами и теоретическими основами программирования, терминологией объектно-ориентированного программирования
  • Формирование представления о возможностях и особенностях объектно-ориентированных языков программирования при проектировании, разработке и отладке компьютерных программ
  • Изучение теоретических основ программирования, методов реализации алгоритмов различного типа, базовых принципов объектно-ориентированного программирования, основных подходов машинного обучения
  • Выработка навыков и умений программирования на языке С++ с использованием широко используемых библиотек
  • Получение опыта работы с механизмами статического полиморфизма, такими как шаблоны функций и классов; поиска эффективных реализаций различных алгоритмов, практических навыков разработки прикладных программ, в том числе для методов анализа данных
Планируемые результаты обучения

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

  • Способен реализовать программу на языке С++ по заданному алгоритму.
  • Способен реализовать программу на языке С++ с использованием контейнеров и алгоритмов стандартной библиотеки, шаблонов и обработкой всех видов исключений.
  • Способен проектировать и реализовывать систему с множеством связанных объектов на основе концепции ООП в С++.
  • Владеет основными шаблонами проектирования, понимает принципы их реализации и использования в разных языках программирования.
Содержание учебной дисциплины

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

  • Введение в программирование на С++.
    Пространства имен. Ввод/вывод в С++. Ссылки. Выделение/освобождение памяти в С++.
  • Обработка исключений. Знакомство с библиотекой STL.
    Понятие исключения. Механизм генерации и обработки исключений. Понятие объекта и класса. Классы стандартной библиотеки для работы со строками. Классы стандартной библиотеки для работы с контейнерами. Операции с объектами стандартной библиотеки. Преобразование типов.
  • ООП в С++. Наследование, виртуальные функции, полиморфизм. Шаблоны.
    Создание пользовательских классов. Принцип композиции при конструировании новых классов. Инициализация данных объекта класса (Конструктор по умолчанию, конструктор с параметрами). Назначение деструктора. Способы передачи объекта в функцию, конструктор копирования. Перегрузка операторов. Статические переменные и методы класса. Константные методы. Перегруженные методы. Спецификаторы доступа public, protected, private. Понятие и механизм наследования классов. Преимущества и недостатки наследования по сравнению с композицией. Виртуальные функции, понятие полиморфизма. Чистые виртуальные функции и абстрактные классы. Доступ к объекту через указатель, преобразование типов. Непрямые базовые классы. Виртуальный деструктор. Множественное наследование.Понятие обобщенного программирования. Определение шаблона класса. Создание объектов шаблона класса. Шаблоны функций.
  • Паттерны проектирования.
    Понятие паттерна проектирования. Порождающие, cтруктурные, поведенческие паттерны.
Элементы контроля

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

  • неблокирующий Аудиторная работа
  • неблокирующий Самостоятельная работа
  • неблокирующий Промежуточный экзамен
  • неблокирующий Итоговый экзамен
    Экзамен проводится в письменной форме (эссе) с использованием асинхронного прокторинга. Экзамен проводится на платформе 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 модуль)
    0.25 * Аудиторная работа + 0.5 * Промежуточный экзамен + 0.25 * Самостоятельная работа
  • Промежуточная аттестация (4 модуль)
    0.6 * Итоговый экзамен + 0.4 * Промежуточная аттестация (1 модуль)
Список литературы

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

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

  • Искусство программирования. Т.1: Основные алгоритмы, Кнут Д. Э., 2011
  • Язык программирования C++, Страуструп Б., Мартынова Н. Н., 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