Экзамен

  • 4 группа: Консультация -- 12 июня (среда), 15:00, ауд. 404
  • 4 группа: Экзамен -- 13 июня (четверг), 09:00, ауд. 404
  • 5 группа: Консультация -- 20 июня (четверг), 15:00, ауд. 404
  • 5 группа: Экзамен -- 21 июня (пятница), 09:00, ауд. 404
  • Экзаменационный билет содержит два вопроса по теории и задачу; см. список контрольных вопросов

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

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

Лекции

#ТемаДатаСкачать
1Язык Python. Синтаксические особенности. Среда разработки JupyterLab. Применение языка программирования Python. Структура программ 09 фев (раздел 1.5 проработать самостоятельно)
2Объект как фундаментальное понятие в Python. Встроенные типы объектов. Понятие объекта. Атрибуты. Методы. Встроенные типы числовых объектов: int, float, complex. Встроенные типы последовательностей: str, list, tuple. Встроенные типы отображения: dict. Встроенные типы множества: set. Изменяемые и неизменяемые встроенные типы объектов 16 фев (разделы 2.4-2.7 проработать самостоятельно)
3Объект как фундаментальное понятие в Python. Встроенные типы объектов. Переменная, значение переменной, ссылка на объект. Интерфейс объектов. Выражение спискового включения. Файловый объект 23 фев (разделы 2.8, 2.10, 2.11, 2.12 проработать самостоятельно)
4Операторы в Python. Оператор присваивания. Оператор выбора. Оператор сопоставления. Операторы цикла01 мар (разделы 3.6-3.7 проработать самостоятельно)
5Функция. Область видимости переменной. Определение функции: оператор def и retutn, значения по умолчанию для аргументов, произвольное количество аргументов, порядок следования аргументов. Вызов функции: позиционные и ключевые аргументы. Объект функции 11 мар
6Функция. Область видимости переменной. Объект функции. Аннотация функции. Строки документации для функций. lambda-функция. Типы областей видимости переменной. Операторы объявления global и nonlocal 15 мар
7Механизм итераций в Python. Итерируемый объект. Итерационный проход по элементам. Объект итератора. Итерационные инструменты. Протокол итераций. Генераторные объекты. Генераторные выражения. Генераторные функции22 мар, 29 мар
8Функциональное программирование в Python. Инструменты функционального программирования. Функции map, filter, enumerate, zip. Функция reduce из модуля functools. Фабричная функция, функция-замыкание, декоратор функции29 мар, 05 апр
(доп. материалы, А.Беленков)
9Модуль в Python. Понятие модуля, пакета, расширения. Стандартная библиотека Python. Импортирование модуля. Доступ к переменным модуля. Перезагрузка модуля05 апр (разделы 7.3, 7.4 проработать самостоятельно)
10Основы объектно-ориентированного программирования в Python. Понятия класса и экземпляра класса. Оператор создания класса. Методы класса. Метод инициализации экземпляра класса12 апр
11Основы объектно-ориентированного программирования в Python. Дерево наследования. Настройка кода. Создание классов на основе встроенных типов. Перегрузка операций и встроенных функций19 апр, 26 апр
12Бинарное дерево поиска. Представление. Проектирование классов 26 апр
13Бинарное дерево поиска. Построение бинарного дерева поиска. Перегрузка операции принадлежности in. Перегрузка встроенной функции len. Обходы бинарного дерева поиска. Центрированный обход. Поиск минимального и максимального значения в дереве02 мая
14Проектирование классов. Классовые методы. Статические методы. Атрибут-свойство. Абстрактный класс. Синглтон. Композиция. Делегирование. 10 мая
15Пакет matplotlib для графического представления данных. Создание графических окон и графических областей. Процедурный подход для построения двумерных графиков. Объектно-ориентированный подход для построения изображений 17 мая
16Программирование с использованием исключений. Стандартный обработчик исключений. Встроенные исключения. Перехват и обработка исключений. Генерация исключений. Диспетчер контекста24 мая
17Расширение numpy для численных вычислений. Тип данных массив (ndarray). Векторизация вычислений с массивами. Операции линейной алгебры31 мая (разделы 13.2-13.4 проработать самостоятельно)

Практика

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

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

Дополнительно смотрите литературу и материалы на Образовательном портале ММФ 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/