• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Компьютерный практикум 3

2023/2024
Учебный год
RUS
Обучение ведется на русском языке
4
Кредиты
Статус:
Курс обязательный
Когда читается:
3-й курс, 1-4 модуль

Преподаватели

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

Аннотация

Язык Python стал стандартным языком для изучения в технических ВУЗах. На 3 курсе студенты ПМ уже знакомы с базовым уровнем языка Python, а также владеют средствами разработки языков Си/Си++. Умеют использовать различные структуры данных и реализовывать базовые и ряд продвинутых алгоритмов. В рамках данного курса предлагается рассмотреть походы к решениям сложных задач средствами языка Python, который позволяет реализовать эффективные вычисления за счет использования различных технологий: jit-компиляция, распараллеливание и др. Также в данной дисциплине рассматриваются темы, направленные на изучение искусственного интеллекта: нейронные сети, стохастический градиентный спуск, диффузионные модели, детекция объектов, рекурентные нейронные сети.
Цель освоения дисциплины

Цель освоения дисциплины

  • Общие принципы построения эффективного вычислительного кода на Python
  • Освоение технологии JIT-компиляции и распараллеливания вычислений в рамках одной машины
  • Создание алгоритмов быстрых вычислений для решения физических задач
  • Освоение технологий программирования двумерной и трехмерной процедурной графики
Планируемые результаты обучения

Планируемые результаты обучения

  • Уметь работать в среде разработки PyCharm
  • - создает многомерные массивы Numpy - изменяет и обращается к содержащимся в них данных и их структуру - осуществляет их агрегацию и объединение - производит матричные операции и использовать принцип бродкастинга - применяет встроенные в библиотеку математические и статистические функции
  • Уметь писать функции на языке Python, подходящие для последующей компиляции. Использовать модуль Numba для компиляции таких функций в режиме nopython.
  • умеет реализовывать конечно-разностный алгоритм на Python для численного решения задачи о переносе тепла; умеет применять модули Numpy и/или Numba для ускорения вычислений
  • умеет строить алгоритм на языке Python для решения задач Прокрустового анализа; умеет применять Numpy и/или Numba для ускорения вычислений
  • умеет реализовывать алгоритм для моделирования многоагентной системы (Boids); умеет визуализировать систему в динамике при помощи модуля VisPy; умеет применять Numpy и/или Numba для ускорения вычислений; умеет создавать видеоролики, демонстрирующие поведение многоагентной системы при помощи ffmpeg
  • умеет создавать на Python алгоритмы процедурной графики с использованием Signed Distance Field при помощи модуля Taichi
  • умеет создавать на Python алгоритмы трехмерной процедурной графики на основе Ray Marching и модуля Taichi
  • умеет реализовывать алгоритм вычисления наименьшего общего предка (LCA) на основе минимума в диапазоне (RMQ) и разреженной таблицы (Sparse Table); умеет применять Numpy и/или Numba для ускорения вычислений
  • умеет реализовывать алгоритмы численного интегрирования систем обыкновенных дифференциальных уравнений по явной схеме Рунге-Кутты; умеет применять Numpy и/или Numba для ускорения вычислений;
  • умеет создавать алгоритмы расчета интервалов видимости космического аппарата с наземного пункта с учетом дополнительных условий используя модуль spiceypy; умеет визуализировать рассчитанные интервалы в виде карты
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Общий подход к созданию быстрого кода на Python для решения задач
  • JIT-компиляция и модуль Numba
  • Модуль Numpy для быстрых вычислений
  • Решение физических задач на основе метода конечных разностей
  • Пространственные и другие преобразования
  • Динамические многоагентные системы
  • Освоение среды разработки PyCharm
  • Процедурная графика
  • Трехмерная процедурная графика
  • Алгоритмы на структурах данных
  • Численное интегрирование динамических систем
  • Численный поиск корней сложной функции
Элементы контроля

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

  • неблокирующий Домашнее задание 2
  • неблокирующий Домашнее задание 1
  • неблокирующий Дополнительные задания сверх объема курса
    Позволяет студенту продемонстрировать знания и умения, достойные оценки 9 или 10
  • неблокирующий Домашнее задание 3
  • неблокирующий Домашнее задание 4
Промежуточная аттестация

Промежуточная аттестация

  • 2023/2024 учебный год 2 модуль
    0.424 * Домашнее задание 1 + 0.424 * Домашнее задание 2 + 0.152 * Дополнительные задания сверх объема курса
  • 2023/2024 учебный год 4 модуль
    0.11 * Домашнее задание 1 + 0.246 * Домашнее задание 2 + 0.246 * Домашнее задание 3 + 0.246 * Домашнее задание 4 + 0.152 * Дополнительные задания сверх объема курса
Список литературы

Список литературы

Рекомендуемая основная литература

  • David F. Griffiths, & Desmond J. Higham. (2010). Numerical Methods for Ordinary Differential Equations : Initial Value Problems (Vol. 2010). Springer.
  • David Wolff. (2018). OpenGL 4 Shading Language Cookbook : Build High-quality, Real-time 3D Graphics with OpenGL 4.6, GLSL 4.6 and C++17, 3rd Edition. Birmingham: Packt Publishing. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1905991
  • Idris, I. (2015). NumPy Cookbook - Second Edition (Vol. Second edition). Birmingham, UK: Packt Publishing. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=986717
  • Idris, I. (2015). NumPy: Beginner’s Guide - Third Edition (Vol. 3rd edition). Birmingham, UK: Packt Publishing. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1018109
  • Rocha, M., & Ferreira, P. G. (2018). Bioinformatics Algorithms : Design and Implementation in Python (Vol. First edition). London: Academic Press. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1572286
  • Уравнения в частных производных для инженеров, Шарма, Дж. Н., 2002

Рекомендуемая дополнительная литература

  • Python для сложных задач : наука о данных и машинное обучение, Плас, Дж. В., 2018