Курс «Компьютерные технологии на базе языка программирования Python» (спец.группа)
Преподаватель: Конев Александр Евгеньевич
Отчетность: зачет
Аннотация
За последние годы язык программирования Python стал одним из самых популярных в научной среде. Его динамическая природа позволяет быстро разрабатывать рабочие прототипы программ, а значит и оперативно проверять идеи ученого, а наличие огромного количества сторонник библиотек покрывает потребности, возникающих в научной деятельности и не только.
В осеннем семестре данного курса даётся введение в Python и его особенности в сравнении с другими языками программирования. Помимо возможностей самого Python разбираются ключевые библиотеки для произведения научных вычислений: NumPy, SciPy, Matplotlib, pandas и др. На протяжении семестра студенты выполняют домашние задания на стыке математического моделирования и программирования, что позволяет получить практические навыки программирования на Python и использования сторонних библиотек.
В весеннем семестре даётся более глубокое понимание о Python. Также разбирается ряд дополнительных библиотек, в том числе и для решения задач машинного обучения и компьютерного зрения, и инструменты для разработки приложений с графическим пользовательским интерфейсом. Для подготовки студентов к публикационной деятельности даётся введение в систему компьютерной верстки LaTeX. На практических занятиях в весеннем семестре главный акцент ставится на курсовой работе, которую студенты защищают в конце семестра.
Литература
- А. Мартелли, А. Рейвенскрофт, С. Холден. «Python. Справочник. Полное описание языка».
- Д. Бизли, Б.К. Джонс. «Python. Книга рецептов».
- Задорожный С.С., Фадеев Е.П. «Объектно-ориентированное программирование на языке Python»
- Шипило Д.Е., Коновко А.А., Лукашёв А.А., Панов Н.А. «Язык программирования Python. Семестр 3.»
- Учебные материалы курса
- Официальная документация Python (английский язык)
- Львовский С.М. «Набор и верстка в системе LaTeX»
Семестр II-3
Программа
- Введение в Python: установка, способы работы, интерактивная подсказка, скрипты и jupyter блокноты. Синтаксические особенности языка Python.
- Особенности языка Python: интерпретируемость и динамическая типизация. Иерархия типов объектов: числа, контейнеры и прочее. Изменяемые и неизменяемый типы.
- Сторонние библиотеки и способы их установки: пакетные менеджеры PyPI и conda.
- Библиотека NumPy: массивы чисел и их устройство, отличие от встроенных коллекций. Векторизация вычислений, индексация массивов и взятие срезов.
- Процедурное программирование в Python. Функции как объекты. Позиционные и именованные аргументы.
- Работа с файловой системой, чтение и запись. Модули sys, os, glob и pathlib.
- Словари. JSON.
- Решение систем (не)линейных уравнений, задач оптимизации, задач дифференциального исчислений и др. методами библиотеки SciPy. Визуализация данных и построение графиков средствами библиотеки Matplotlib. Обзор альтернативных графических библиотек.
- Скрипты, модули и пакеты в Python. Интерфейс командной строки и модуль argparse.
- Библиотека Pandas. Таблицы данных и их эффективная индексация. Чтение и запись с диска. Формат CSV.
Теоретический минимум по программе семестра
Семестр II-4
Программа
- Списковые включения, итераторы, генераторы, декораторы.
- Элементы объектно-ориентированного программирования в Python: пользовательские типы данных.
- Ошибки и исключения в Python. Способы их обработки и стратегии контроля ошибок.
- Обзор средства для разработки графического пользовательского интерфейса. Библиотека PySide.
- Основы компьютерного зрения. Представления изображений в компьютере. Библиотека openCV, фильтрация изображения и классические подходы к обнаружению объектов.
- Основы машинного обучения. Классические методы машинного обучения. Обзор библиотеки scikit-learn. Нейронные сети. Обзор библиотеки torch.
- Введение в систему компьютерной верстки LaTeX.