Чему вы научитесь
- Писать на Julia расчётный код, который не нужно переписывать ради скорости
- Проектировать модели через систему типов и множественную диспетчеризацию
- Оценивать устойчивость и обусловленность численной задачи до того, как получен неверный результат
- Реализовывать и проверять решатели дифференциальных уравнений, включая жёсткие системы и события
- Решать уравнения в частных производных методом конечных разностей и конечных элементов
- Подтверждать порядок сходимости схемы измерением, в том числе методом изготовленных решений
- Идентифицировать параметры модели по измерениям и оценивать погрешности этих оценок
- Распознавать неидентифицируемые комбинации параметров и регуляризовать некорректные задачи
- Оценивать неопределённость результата расчёта и находить параметр, который её определяет
- Находить и устранять узкие места производительности: типовую нестабильность, аллокации, промахи кэша
- Распараллеливать расчёт потоками, процессами и на GPU
- Готовить графики публикационного качества и воспроизводимые визуальные отчёты
- Собирать пакет с тестами, документацией и непрерывной интеграцией
- Делать расчёт воспроизводимым: фиксация версий, зерно генератора, хеш конфигурации прогона
О курсе
Для кого этот курс
Начальные требования
Опыт численного программирования на любом языке: Python, MATLAB, C++, Fortran, R. Понимание того, что такое массив, функция, тип данных и модуль.
Математика на уровне технического вуза: производная и интеграл, матрицы и системы линейных уравнений, обыкновенные дифференциальные уравнения. Знакомство с уравнениями в частных производных полезно, но необязательно — метод прямых и разностные схемы разбираются с нуля.
Из инструментов нужны Julia 1.12 (ставится через juliaup за одну команду), любой текстовый редактор и терминал. Всё остальное — пакеты Julia, они ставятся по ходу курса. Отдельного оборудования не требуется: глава про GPU читается и без видеокарты, примеры на ней помечены.
Преподаватели курса
Формат курса
Материал текстовый. Каждый урок — законченная глава: инженерная задача, разбор механизма, код, который можно скопировать и запустить, разбор типичных ошибок, практическое задание и вопросы для самопроверки. Главы с третьей по десятую заканчиваются тестовыми задачами; после неверного ответа показывается объяснение.
Работать удобнее с открытым терминалом: почти весь код в уроках предназначен для запуска. Параллельно с курсом растёт сквозной проект — его можно собирать вместе с автором или взять готовые исходники и разбирать их.
Дедлайнов нет, порядок глав последовательный: каждая опирается на предыдущие, а последняя собирает всё вместе.
Что вы получите
- Исходники сквозного проекта Poincare.jl — работающий расчётный стенд, а не фрагменты
- Набор запускаемых примеров по механике, теплофизике, биологической кинетике и обратным задачам
- Готовые к переносу решения: конфигурация расчёта, пайплайн этапов, кэш, журнал и отчёт
- Тесты численного кода как образец: проверка порядка сходимости, инвариантов, сравнение с аналитикой
- Настроенные файлы непрерывной интеграции, документации и сборки приложения
- Практические задания и вопросы для самопроверки в каждом уроке
- Тестовые задачи с разбором в главах с третьей по десятую