Программа курса
Курс Программирование на 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
, главный цикл - Отображение геометрических фигур
- Обработка событий
- Структура программы с
Материалы
Работа над задачами