Курс «Компьютерные технологии на базе языка программирования Python» (спец.группа)

Преподаватель: Фадеев Егор Павлович

Отчетность: зачет

Аннотация

За последние годы язык программирования Python стал одним из самых популярных в научной среде. Его динамическая природа позволяет быстро разрабатывать рабочие прототипы программ, а значит и оперативно проверять идеи ученного, а наличие огромного количества сторонник библиотек покрывает потребности, возникающих в научной деятельности и не только.

В осеннем семестре данного курса даётся введение в Python и его особенности в сравнении с другими языками программирования. Помимо возможностей самого Python разбираются ключевые библиотеки для произведения научных вычислений: NumPy, SciPy, Matplotlib, pandas и др. На протяжении семестра студенты выполняют домашние задания на стыке математического моделирования и программирования, что позволяет получить практические навыки программирования на Python и использования сторонних библиотек.

В весеннем семестре даётся более глубокое понимание о Python. Также разбирается ряд дополнительных библиотек, в том числе и для решения задач машинного обучения и компьютерного зрения, и инструменты для разработки приложений с графическим пользовательским интерфейсом. Для подготовки студентов к публикационной деятельности даётся введение в систему компьютерной верстки LaTeX. На практических занятиях в весеннем семестре главный акцент ставится на курсовой работе, которую студенты защищают в конце семестра.

Литература

  1. А. Мартелли, А. Рейвенскрофт, С. Холден. «Python. Справочник. Полное описание языка».
  2. Д. Бизли, Б.К. Джонс. «Python. Книга рецептов».
  3. Задорожный С.С., Фадеев Е.П. «Объектно-ориентированное программирование на языке Python»
  4. Учебные материалы курса
  5. Официальная документация Python (английский язык)
  6. Львовский С.М. «Набор и верстка в системе LaTeX»

Семестр II-3

Программа

  1. Введение в Python: установка, способы работы, интерактивная подсказка, скрипты и jupyter блокноты. Синтаксические особенности языка Python.
  2. Особенности языка Python: интерпретируемость и динамическая типизация. Иерархия типов объектов: числа, контейнеры и прочее. Изменяемые и неизменяемый типы.
  3. Сторонние библиотеки и способы их установки: пакетные менеджеры PyPI и conda.
  4. Библиотека NumPy: массивы чисел и их устройство, отличие от встроенных коллекций. Векторизация вычислений, индексация массивов и взятие срезов.
  5. Процедурное программирование в Python. Функции как объекты. Позиционные и именованные аргументы.
  6. Работа с файловой системой, чтение и запись. Модули sys, os, glob и pathlib.
  7. Словари. JSON.
  8. Решение систем (не)линейных уравнений, задач оптимизации, задач дифференциального исчислений и др. методами библиотеки SciPy. Визуализация данных и построение графиков средствами библиотеки Matplotlib. Обзор альтернативных графических библиотек.
  9. Скрипты, модули и пакеты в Python. Интерфейс командной строки и модуль argparse.
  10. Библиотека Pandas. Таблицы данных и их эффективная индексация. Чтение и запись с диска. Формат CSV.

Теоретический минимум по программе семестра

Семестр II-4

Программа

  1. Списковые включения, итераторы, генераторы, декараторы.
  2. Элементы объектно-ориентированного программирования в Python: пользовательские типы данных.
  3. Ошибки и исключения в Python. Способы их обработки и стратегии контроля ошибок.
  4. Обзор средства для разработки графического пользовательского интерфейса. Библиотека PySide.
  5. Основы компьютерного зрения. Представления изображений в компьютере. Библиотека openCV, фильтрация изображения и классические подходы к обнаружению объектов.
  6. Основы машинного обучения. Классические методы машинного обучения. Обзор библиотеки scikit-learn. Нейронные сети. Обзор библиотеки torch.
  7. Введение в систему компьютерной верстки LaTeX.

Теоретический минимум по программе семестра