Математика для программистов: философия и практика преподавания
Ключевые тезисы:
- Математика для программиста — это фундамент, набор базовых концепций для понимания сути процессов.
- Суть математики — поиск инвариантов (одинакового) и различий.
- Преподавание — это не только передача знаний, но и воспитание кругозора, эрудиции и способности мечтать.
- Практические задания и курсовые работы нацелены на применение сложных алгоритмов к реальным задачам.

О преподавателе
- Образование: учитель математики и физики, аспирантура по вычислительной математике.
- Преподаёт с 2000 года, но до сих пор считает себя начинающим преподавателем — так удобнее готовиться к занятиям.
- Сжигает старые лекции, чтобы не отставать от современной программы.
Дискретная математика (1 курс)
Цель предмета: Объяснить базовые математические понятия, с которыми работает будущий программист. Студент должен понимать значение каждого термина.
Структура курса:
- Логика: логические операции, функции, предикаты, доказательства.
- Теория множеств: базовая основа всей современной математики.
- Функции: строгое определение понятия.
Свойство — это предикат (булева функция).
- Отношения:
- Отношение порядка (сравнение объектов).
- Отношение эквивалентности (поиск одинакового).
- Основы теории чисел: целочисленные функции (пол, потолок, mod, div), сравнения, остатки.
- Прикладная часть: изучение доходит до хеш-функций и криптосистем (практическое задание — зашифровать новогоднее поздравление).
Формат практических работ: Студенты получают индивидуальные задания. Оценка зависит не от правильного ответа, а от демонстрации хода мыслей.
Высшая математика (1 курс, параллельно)
Цель: Изучение классических математических концепций для прикладных задач (игры, дроны, движки).
Структура курса:
- Действительное число: вводится как предел последовательности или сечение (в школе изучается интуитивно).
- Функция (от действительных чисел).
- Непрерывность.
- Производная, интегралы, ряды.
- Векторный анализ: например, понятие потока (сумма векторов скорости в сечении реки).
Пример из практики: После летней практики, где студенты писали игру, они признавались, что вся высшая математика пригодилась.
Комбинаторные алгоритмы (продвинутый курс)
Фишка курса — курсовая работа.
- Преподаватель изучает современные научные публикации (Стэнфорд, MIT, МГУ) и адаптирует сложные алгоритмы для студентов.
- Задача студента: изучить задачу и современный алгоритм, а затем с нуля написать программу, его реализующую.
Пример темы курсовой: Задача оптимизации расписания для медицинских центров (учёт больных, врачей, их специализации, стоимости работы, расстояний и временных окон).
Философия преподавания и воспитания
- Роль преподавателя: как дирижёр, должен удерживать внимание аудитории (рассказать анекдот, «помахать шашкой»).
- Цель — воспитать кругозор и эрудицию: показывать личный пример (чтение книг, походы в музеи и театры, путешествия за спектаклями).
- Главная проблема современных школьников/студентов: перестали мечтать о будущем и своём месте в мире.
Выводы:
- Математика для программиста — живой и постоянно обновляющийся инструментарий.
- Эффективное обучение строится на понимании фундаментальных концепций, а не на заучивании.
- Важнейшая задача образования — не только дать знания, но и разжечь любопытство, расширить кругозор и вернуть студентам способность мечтать.