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

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

Лучший по критерию «Полезность курса для Вашей будущей карьеры»
Статус: Курс обязательный (Прикладная математика и информатика)
Направление: 01.03.02. Прикладная математика и информатика
Когда читается: 1-й курс, 1, 3 модуль
Формат изучения: Blended
Язык: русский
Кредиты: 9

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

Аннотация

Курс состоит из двух частей. В первой части студенты изучают 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.
Элементы контроля

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

  • неблокирующий Created with Sketch. Домашняя работа 1
  • неблокирующий Created with Sketch. Домашняя работа 2
  • неблокирующий Created with Sketch. Домашняя работа 3
  • неблокирующий Created with Sketch. Домашняя работа 4
  • неблокирующий Created with Sketch. Домашняя работа 5
  • неблокирующий Created with Sketch. Домашняя работа 6
  • неблокирующий Created with Sketch. Домашняя работа 7
  • неблокирующий Created with Sketch. Домашняя работа 8
  • неблокирующий Created with Sketch. Домашняя работа 9
  • неблокирующий Created with Sketch. Домашняя работа 10
  • неблокирующий Created with Sketch. Домашняя работа 11
  • неблокирующий Created with Sketch. Домашняя работа 12
  • неблокирующий Created with Sketch. Экзамен
  • неблокирующий Created with Sketch. Контрольная работа 1 (C++)
  • неблокирующий Created with Sketch. Контрольная работа 2 (C++)
  • неблокирующий Created with Sketch. Контрольная работа 3 (C++)
  • неблокирующий Created with Sketch. Контрольная работа 4 (C++)
  • неблокирующий Created with Sketch. Домашнее задание (C++)
  • неблокирующий Created with Sketch. Экзамен (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.