• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2016/2017

Основы и методология программирования

Статус: Курс обязательный (Прикладная математика и информатика)
Направление: 01.03.02. Прикладная математика и информатика
Когда читается: 1-й курс, 1-3 модуль
Преподаватели: Абрамов Сергей Петрович, Бабенко Максим Александрович, Густокашин Михаил Сергеевич, Зобнин Алексей Игоревич, Кутылев Сергей Александрович, Объедков Сергей Александрович, Папулин Сергей Юрьевич, Полицына Екатерина Валерьевна, Полицын Сергей Александрович, Умнов Алексей Витальевич
Язык: русский
Кредиты: 12

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

Аннотация

Курс состоит из двух частей. В первой части студенты изучают Python - высокоуровневый интерпретируемый язык программирования, популярный в области машинного обучения и анализа данных. Эта часть проходит в blended-формате с использованием онлайн-курса. Вторая часть посвящена основам языка C++. Курс опирается на последний стандарт C++17. Вначале изучаются контейнеры, итераторы и алгоритмы стандартной библиотеки, и лишь затем - работа с памятью и указатели. Значительное время уделяется философии работы с ресурсами в C++. Студентам предлагается большой объём практических заданий, проверяемых автоматически и затем рецензируемых вручную. Обе части курса не затрагивают многопоточность.
Цель освоения дисциплины

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

  • Знание и практическое применение языков Python и С++ в объёме, достаточном для реализации алгоритмов из курса "Алгоритмы и структуры данных"
Планируемые результаты обучения

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

  • Умеет установить интерпретатор Python и выполнить код с его помощью
  • Умеет считывать введённые пользователем данные и выводить результаты работы программы
  • Понимает структуру кода на питоне: переносы строк, отступы, разделители; знает основные операторы языка
  • Знает основные типы данных в питоне (булев тип, целые числа, числа с плавающей точкой, строки), умеет писать код, выполняющий арифметические операции и базовые операции со строками
  • Понимает концепцию работы переменных в питоне, умеет объявлять переменные и использовать их в коде
  • Понимает принципы ветвления кода, умеет писать код с использованием условного оператора
  • Понимает концепцию циклов, умеет писать код с использованием конструкций for и while
  • Понимает концепцию функций в языках программирования, умеет задавать функции, использовать аргументы в теле функций, вызывать функции
  • Понимает концепцию рекурсии и умеет использовать её для решения соответствующих задач
  • Знает основные структуры данных в питоне: кортежи, списки, множества и словари; умеет реализовывать в коде операции с ними
  • Понимает концепцию поиска в структуре данных и сортировки структуры данных, умеет подобрать правильную структуру данных для задачи, умеет реализовать алгоритмы поиска и сортировки
  • Умеет работать с файлами: читать и записывать информацию, обходить файлы на жёстком диске и работать с их именами, учитывать кодировку файла при взаимодействии с ним
  • Умеет работать со строками: искать подстроки, делать замены подстрок, объединять и делить строки, корректно учитывать кодировки строк
  • Знать основные контейнеры стандартной библиотеки C++
  • Знать основные алгоритмы стандартной библиотеки C++
  • Уметь работать с классами и объектами в C++
  • Знать модель работы с ресурсами в C++
Содержание учебной дисциплины

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

  • Язык программирования Python
    1. Целые числа и ввод-вывод. 2. Условный оператор. 3. Цикл while. 4. Вещественные числа и строки. 5. Функции и рекурсия. 6. Цикл for. 7. Списки. 8. Линейный поиск и сортировка. 9. Множества. 10. Словари. 11. Функциональное программирование. 12. Классы. 13. Знакомство со стандартной библиотекой языка Python.
  • Язык программирования C++
    1. Переменные, ввод и вывод, условный оператор, циклы, оператор switch. 2. Векторы и строки. Алгоритм sort. 3. Структуры. Классы pair и tuple. 4. Константность. Ссылки. Указатели. 5. Функции и лямбда-функции. Способы передачи и возврата параметров. 6. Ассоциативные контейнеры map и unordered_map. 7. Контейнеры list и deque. Адаптеры stack, queue и priority_queue. 8. Шаблонные функции. Алгоритмы стандартной библиотеки. 9. Битовые операции. Выражения, операторы. Перегрузка операторов. 10. Классы: публичный интерфейс и приватные детали реализации. Функции-члены. 11. Жизненный цикл объекта. Конструкторы, деструктор. Семантика перемещения. 12. Исключения. 13. Динамическая память. Динамические массивы. Null-terminated strings. 14. Работа с памятью. Сериализация и десериализация. 15. Идиома RAII. 16. Умные указатели unique_ptr и shared_ptr. 17. Одиночное наследование. Полиморфизм. Виртуальные функции. 18. Реализация шаблонного класса vector.
Элементы контроля

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

  • неблокирующий Домашняя работа 1
  • неблокирующий Домашняя работа 2
  • неблокирующий Домашняя работа 3
  • неблокирующий Домашняя работа 4
  • неблокирующий Домашняя работа 5
  • неблокирующий Домашняя работа 6
  • неблокирующий Домашняя работа 7
  • неблокирующий Домашняя работа 8
  • неблокирующий Домашняя работа 9
  • неблокирующий Домашняя работа 10
  • неблокирующий Домашняя работа 11
  • неблокирующий Домашняя работа 12
  • неблокирующий Экзамен
  • неблокирующий Контрольная работа 1 (C++)
  • неблокирующий Контрольная работа 2 (C++)
  • неблокирующий Контрольная работа 3 (C++)
  • неблокирующий Контрольная работа 4 (C++)
  • неблокирующий Домашнее задание (C++)
  • неблокирующий Экзамен (C++)
Промежуточная аттестация

Промежуточная аттестация

  • Промежуточная аттестация (1 модуль)
    0.05 * Домашняя работа 1 + 0.05 * Домашняя работа 10 + 0.05 * Домашняя работа 11 + 0.05 * Домашняя работа 12 + 0.05 * Домашняя работа 2 + 0.05 * Домашняя работа 3 + 0.05 * Домашняя работа 4 + 0.05 * Домашняя работа 5 + 0.05 * Домашняя работа 6 + 0.05 * Домашняя работа 7 + 0.05 * Домашняя работа 8 + 0.05 * Домашняя работа 9 + 0.4 * Экзамен
  • Промежуточная аттестация (3 модуль)
    0.3 * Домашнее задание (C++) + 0.1 * Контрольная работа 1 (C++) + 0.1 * Контрольная работа 2 (C++) + 0.1 * Контрольная работа 3 (C++) + 0.1 * Контрольная работа 4 (C++) + 0.3 * Экзамен (C++)
Список литературы

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

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

  • - Липпман С., Лажойе Ж. — Язык программирования С++. Полное руководство - Издательство "ДМК Пресс" - 2006 - ISBN: 5-94074-040-5 - Текст электронный // ЭБС Лань - URL: https://e.lanbook.com/book/1216
  • Lutz, M. (2008). Learning Python (Vol. 3rd ed). Beijing: O’Reilly Media. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=415392

Рекомендуемая дополнительная литература

  • - Дейл Н., Уимз Ч., Хедингтон М. — Программирование на С++ - Издательство "ДМК Пресс" - 2007 - ISBN: 5-93700-008-0 - Текст электронный // ЭБС Лань - URL: https://e.lanbook.com/book/1219
  • Matthes, E. Python crash course: a hands-on, project-based introduction to programming. – No Starch Press, 2015. – 562 pp.