Для выполнения лабораторных работ будет использована среда разработки JupyterLab https://jupyter.org/ для работы с блокнотами Jupyter Notebook

Возможная установка через дистрибутив Python Anaconda Distribution (Windows: Python 3.12, 64-Bit Graphical Installer, 912.3 MB) https://www.anaconda.com/products/individual

Лекции

#ТемаДатаСкачать
1Язык Python. Синтаксические особенности. Среда разработки JupyterLab. Применение языка программирования Python. Структура программ 12 фев (раздел 1.5 проработать самостоятельно)
2Объект как фундаментальное понятие в Python. Встроенные типы объектов. Понятие объекта. Атрибуты. Методы. Встроенные типы числовых объектов: int, float, complex. Встроенные типы последовательностей: str, list, tuple. Встроенные типы отображения: dict. Встроенные типы множества: set 19 фев (разделы 2.3-2.5 проработать самостоятельно)
3Объект как фундаментальное понятие в Python. Встроенные типы объектов. Изменяемые и неизменяемые встроенные типы объектов. Переменная, значение переменной, ссылка на объект. Интерфейс объектов. Выражение спискового включения. Файловый объект 26 фев (разделы 2.8, 2.10, 2.11, 2.12 проработать самостоятельно)
4Операторы в Python. Операторы присваивания. Оператор выбора. Оператор сопоставления. Операторы цикла05 мар (разделы 3.5-3.8 проработать самостоятельно)
5Функция. Область видимости переменной. Определение функции: оператор def и retutn, значения по умолчанию для аргументов, произвольное количество аргументов, порядок следования аргументов. Вызов функции: позиционные и ключевые аргументы. Объект функции. Аннотация функции 12 мар
6Функция. Область видимости переменной. Строки документации для функций. lambda-функция. Типы областей видимости переменной. Операторы объявления global и nonlocal 19 мар
7Механизм итераций в Python. Итерируемый объект. Итерационный проход по элементам. Объект итератора. Итерационные инструменты. Протокол итераций. Генераторные объекты. Генераторные выражения. Генераторные функции26 мар (Генераторные функции проработать самостоятельно)
8Функциональное программирование в Python. Инструменты функционального программирования. Функции map, filter, enumerate, zip. Функция reduce из модуля functools. Фабричная функция, функция-замыкание, декоратор функции02 апр (разделы 6.6, 6.7 проработать самостоятельно)
9Модуль в Python. Понятие модуля, пакета, расширения. Стандартная библиотека Python. Импортирование модуля. Доступ к переменным модуля. Перезагрузка модуля09 апр
10Основы объектно-ориентированного программирования в Python. Понятия класса и экземпляра класса. Оператор создания класса. Методы класса. Метод инициализации экземпляра класса16 апр
11Основы объектно-ориентированного программирования в Python. Дерево наследования. Настройка кода. Создание классов на основе встроенных типов. Перегрузка операций и встроенных функций23 апр (раздел 8.6 проработать самостоятельно)
12Бинарное дерево поиска. Представление. Проектирование классов. Построение бинарного дерева поиска 30 апр
13Бинарное дерево поиска. Перегрузка операции принадлежности in. Перегрузка встроенной функции len. Обходы бинарного дерева поиска. Центрированный обход. Поиск минимального и максимального значения в дереве07 мая
14Проектирование классов. Классовые методы. Статические методы. Атрибут-свойство. Абстрактный класс. Синглтон. Композиция. Делегирование. Классы данных14 мая (раздел 10.7 проработать самостоятельно)
15Расширение numpy для численных вычислений. Тип данных массив (ndarray). Векторизация вычислений с массивами. Операции линейной алгебры21 мая (разделы 11.3-11.4 проработать самостоятельно)

Практика

#ТемаИсточникСрок сдачи
1Погружение в JupyterLab. Знакомство с Python. Задача о падении тела. Построение графиков функций (основной документ, "дорожная карта" для выполнения Лб1)
(pdf-представление ipynb-файла)
26 фев, 27 фев,
28 фев, 01 мар
в соотв. подгруппах
2Встроенные типы объектов в Python 12 мар, 13 мар,
14 мар, 15 мар
в соотв. подгруппах
3Анимация движения секущей прямой к заданной линии на плоскости
(контрольные вопросы, обновление от 20.03)
19 мар, 20 мар,
21 мар, 22 мар
в соотв. подгруппах
4Правильный многоугольник Рело. Векторизация вычислений в numpy. Пользовательская функция для моделирование границы правильного многоугольника Рело
(контрольные вопросы)
02 апр, 03 апр,
04 апр, 05 апр
в соотв. подгруппах
5Анимация качения треугольника Рело
(контрольные вопросы)
16 апр, 17 апр,
18 апр, 19 апр
в соотв. подгруппах
*Управляемая самостоятельная работа 1 по теме функции в Python (Лекции 5-8).
При выполнении заданий можно пользоваться только справочной системой Python, доступной в JupyterLab через меню Help | Python Reference.
09 апр, 10 апр,
11 апр, 12 апр
в соотв. подгруппах
6Выравнивание списка, состоящего из итерируемых объектов, на основе рекурсии 30 апр, 01 мая,
02 мая, 03 мая
в соотв. подгруппах
7Построение бинарного дерева поиска. Подсчет количества элементов в дереве
(Доп. задания по трассировке объектного уровня)
14 мая, 15 мая,
16 мая, 17 мая
в соотв. подгруппах
(Доп. задания, Задания 8.1--8.5)
8Обход бинарного дерева поиска. Поиск максимального и минимального значений 21 мая, 22 мая,
23 мая, 24 мая
в соотв. подгруппах
*Управляемая самостоятельная работа 2 по теме ООП в Python (Лекции 10-14).
При выполнении заданий можно пользоваться только справочной системой Python, доступной в JupyterLab через меню Help | Python Reference.
(контрольные вопросы)21 мая, 22 мая,
23 мая, 24 мая
в соотв. подгруппах
9Создание текстового файл большого объема с помощью генераторной функции 04 июн, 05 июн,
06 июн, 07 июн
в соотв. подгруппах

Литература и материалы

Дополнительно смотрите литературу и материалы на Образовательном портале ММФ https://edummf.bsu.by/course/view.php?id=1065
  • Лутц М. Изучаем Python, том 1 (5-е изд.) — СПб.: ООО "Диалектика", 2019.
  • Лутц М. Изучаем Python, том 2 (5-е изд.) — СПб.: ООО "Диалектика", 2020.
  • Бизли Д. Python. Исчерпывающее руководство — СПб.: Питер, 2023.
  • Майер К. Однострочники Python: лаконичный и содержательный код — СПб.: Питер, 2022.
  • Мэтиз Э. Изучаем Python: программирование игр, визуализация данных, веб-приложения — СПб.: Питер, 2020.
  • Любанович Б. Простой Python. Современный стиль программирования (2-е изд.) — СПб.: Питер, 2021.
  • Хиллард Д. Секреты Python Pro — СПб.: Питер, 2021.
  • Криволапов С.Я. Математика на Python : учебник / С.Я. Криволапов, М.Б. Хрипуно­ва. — Москва: КНОРУС, 2022.
  • Лутц М. Программирование на Python, том 1 (4-е изд.) — СПб.: Символ-Плюс, 2011.
  • Лутц М. Программирование на Python, том 2 (4-е изд.) — СПб.: Символ-Плюс, 2011.
  • Rougier N. Scientific Visualization: Python + Matplotlib — 2021. https://github.com/rougier/scientific-visualization-book
  • Rougier N. From Python to Numpy — 2017. https://www.labri.fr/perso/nrougier/from-python-to-numpy
  • PEP 8, руководство по стандартам стиля кодирования на Python, 2001, 2013. https://www.python.org/dev/peps/pep-0008/
  • PEP 257, руководство по стандартам для оформления строк документации на Python, 2001. https://www.python.org/dev/peps/pep-0257/