C++ и Python

Программа курса

Курс Программирование на C++ и Python предполагает учебную нагрузку в две пары в неделю в течение 16 недель. Четверть времени отведена на лекции (8 лекций в семестр), а оставшаяся часть времени посвящена практическими занятиями (1.5 пары в неделю).

Лекции

  • Потоки ввода-вывода
  • Функции
    • Передача аргументов по ссылке
    • Перегрузка функций
  • lvalue- и rvalue-выражения
  • Инкапсуляция и классы
    • Поля и методы
    • Объявление и определение класса
    • Особые методы класса

Материалы

  • Статические поля и методы
  • Перегрузка операторов
  • Полиморфизм и наследование
  • Идиома RAII
    • Пример 1. Работа с файлами
    • Пример 2. Работа с динамической памятью

Материалы

  • Стандартные контейнеры
    • Последовательные контейнеры: vector, list
    • Ассоциативные контейнеры: set, map
  • Итераторы
    • Классификация итераторов
  • Вычислительная сложность алгоритмов
  • Алгоритмы STL
  • Библиотека numeric

Материалы

  • Обобщенное программирование
    • Шаблонные функции
    • Шаблонные классы
  • Функциональное программирование
    • Лямбда-выражения
    • Библиотека functional

Материалы

  • Базовые типы и контейнеры
    • int, float, str
    • list, tuple, set, dict
  • Управляющие конструкции
    • if, while, for, тернарный оператор
  • Функции
    • Способы передачи аргументов в функцию
  • Строки

Материалы

  • Объектно-ориентированная разработка с python
  • Обзор стандартной библиотеки
    • os, sys, string, decimal, fractions, collections, itertools, datetime

Материалы

  • Вычисления с numpy
    • Массивы numpy
    • Механизм broadcasting
    • Линейная алгебра с numpy
  • Визуализация данных с matplotlib
    • plot, errorbar, hist
    • scatter
    • countour
  • Продвинутая настройка графиков
  • Модули библиотеки scipy: special, integrate, linalg, interpolate, optimize, stats, fftpack
  • Символьные вычисления с sympy

Материалы

  • Основы работы с pygame
    • Главный цикл
    • Рисование геометрических фигур
    • Обработка событий
  • Пример. Визуализация модели физической системы с pygame

Материалы

Практические занятия

  • Настройка рабочей среды * Создание GitHub аккаунта * Установка VS Code, mingw, git, CMake
  • Компилирование программ с помощью gcc и CMake
  • Освоение процедуры сдачи заданий * Выполнение задания "Hello, Classroom!"
  • Работа с потоками ввода-вывода * Библиотеки iostream, fstream, sstream
  • Работа со строками в C++ * Библиотека string

Материалы

  • Контейнеры стандартной библиотеки C++
    • vector, list, array, deque, priority_queue
    • set, map, unordered_set, unordered_map
    • range-based for loop
  • Эффективная передача параметров в функцию
    • Передача параметров в функцию по ссылке
    • Константные параметры
  • Итераторы
    • Типы итераторов
    • Конструирование контейнеров с помощью итераторов

Материалы

  • Алгоритмы стандартной библиотеки C++
    • for_each, sort, stable_sort, lower_bound, upper_bound, binary_search, copy_if, unique, any_of, all_of, none_of, copy_if, erase
    • Компараторы и предикаты
  • Лямбда-функции
  • Библиотека numeric
    • iota, accumulate, inner_product

Материалы

  • Классы
    • Публичные и приватные поля и методы
    • Статические поля и методы
    • Конструктор, деструктор, специальные методы
    • Константные поля и методы
    • Перегрузка операторов
    • Ключевые слова delete и default

Материалы

  • Наследование
    • Абстрактные типы
    • Виртуальные функции
    • Ключевые слова override и final
  • Динамическое выделение памяти
    • Использование new и delete
    • Идиома RAII
    • Умные указатели unique_ptr и shared_ptr

Материалы

  • Обобщенное программирование
    • Шаблонные функции
    • Шаблонные классы

Материалы

  • Основы синтаксиса языка python
  • Базовые типы данных и встроенные контейнеры
    • int, float, list, str, dict, set, tuple
  • Запись/чтение из файла
  • Подробнее о строках
    • f-, r-, и b-строки
    • методы count, capitalize, isdigit, encode и др.
  • Полезные модули стандартной библиотеки
    • Библиотеки os и sys
    • Аргументы командной строки и библиотека argparse
    • Библиотеки datetime и calendar
    • Библиотеки decimal и fraction

Материалы

  • Объектно-ориентированная разработка с python
  • Продолжаем знакомство со стандартной библиотекой python
    • Основы работы с web: библиотеки wget, requests
    • Сериализация с библиотекой json
    • Временные файлы с библиотекой tempfile
  • Итераторы, генераторы. Ключевое слово yield

Материалы

  • Вычисления с библиотекой numpy
    • Создание массивов numpy
    • Способы индексирования
    • Операции с массивами numpy, broadcasting
    • Случайные числа с numpy
    • Линейная алгебра с numpy

Материалы

  • Визуализация данных с библиотекой matplotlib
    • Графики plot, errorbar
    • Гистограммы hist
    • Диаграммы рассеяния scatter
    • Контурные диаграммы contour
    • Настройка отображения графиков

Материалы

  • Графика с библиотекой pygame
    • Структура программы с pygame, главный цикл
    • Отображение геометрических фигур
    • Обработка событий

Материалы

Работа над задачами