Функциональное программирование и структуры данных на языке Python [2022]
Высшая инженерная школа СПбПУ (Санкт-Петербургский Политехнический Университет)
Давид Антонян, Елена Крылова
Курс является третьим в линейке курсов, посвящённых языку программирования Python. Он доступен тем, кто уже овладел языком Python на уровне структурного программирования и уверенно пишет программы на уровне курса информатики средней школы и ЕГЭ.
Цель курса – на примере аскетичного и выразительного Питона овладеть техникой функционального программирования, познакомиться с типичными для многих языков структурами данных, оценить их применимость для решения различных задач.
В курсе много практических заданий, выполнение которых не только знакомит с особенностями языка, но и вырабатывает алгоритмическую культуру, учит мыслить в терминах структур данных – а это именно то, что отличает программиста от чернорабочего «кодера». Каждая тема курса содержит как задачи базового уровня (обязательные), так и повышенного (дополнительные).
Курс будет полезен и тем, кто пробует себя в олимпиадном программировании, и тем, кто планирует далее осваивать практические применения Питона в различных сферах.
Чему научим:
1. Знания и представления:
- Парадигмы программирования, возможность их реализации на Python.
- Функциональное программирование: суть, преимущества.
- Функции в Python, типы аргументов.
- Способы вызова функций.
- Модули, использование функций из модулей стандартной библиотеки.
- Подключение внешних библиотек.
- Рекурсия, её сильные и слабые стороны.
- Анонимные функции (лямбда-выражения).
- Функции высших порядков map, filter, zip, reduce.
- Списки: назначение, внутренняя реализация, возможности.
- Массивы библиотеки NumPy: возможности, применение
- Словари, их применение.
- Множества, операции над множествами.
- Техника разработки программ в среде PyCharm.
- Использование информационных ресурсов по языку Python.
- Использование функций стандартной библиотеки.
- Разработка и вызов функций.
- Реализация рекурсивных алгоритмов.
- Использование лямбда-выражений.
- Применение функций высших порядков.
- Программирование в функциональном стиле.
- Работа со списками, словарями, множествами.
- Подключение библиотек.
- Работа с массивами.
- Рациональный выбор структур данных для решения задачи.
- Разработка программ для автоматической проверки (спортивное программирование).
Занятие 1 - Введение. Парадигмы программирования
Занятие 10 - Python и олимпиадное программирование
- Стили программирования на Python.
- Знакомство со средой программирования PyCharm.
- Повторение: базовые типы данных и операции.
- Входная проверочная работа.
- Повторение: создание функции, вызов функции.
- Встроенные функции. Модули, их подключение.
- Аргументы функции: позиционные и именованные.
- Рекурсия.
- Практикум: планирование и разработка функций.
- Анонимные функции – lambda-выражения.
- Списковый вызов функций.
- Функция высшего порядка map.
- Практикум: разработка программ в функциональном стиле.
- Передача функции в качестве аргумента.
- Функция map – подробнее.
- Функции filter, zip, reduce.
- Практикум: разработка программ в функциональном стиле (продолжение).
- Простые и структурированные данные.
- Повторение: списки, кортежи.
- Внутренняя реализация списка в Python. Различие между списком и массивом.
- Практикум – работа со списками.
- Различие между функцией и методом.
- Функции и методы списков.
- Практикум – работа со списками (продолжение).
- Библиотеки, их подключение.
- Массивы в NumPy.
- Индексация в массивах.
- Векторизованные вычисления.
- Методы массивов.
- Практикум – работа с массивами.
- Суть и назначение словаря (ассоциативного массива).
- Создание словаря.
- Методы словарей.
- Множество как набор неповторяющихся элементов.
- Операции над множествами в Python.
- Практикум: работа со словарями и множествами.
Занятие 10 - Python и олимпиадное программирование
- Ввод и вывод данных в автопроверяемых программах
- Плюсы и минусы Python в спортивном программировании
- Практикум: решение олимпиадных задач, требующих применения эффективных алгоритмов или рационального выбора структуры данных.
- Тематические тесты на повторение.
- Практикум по решению задач.
- Экзаменационный тест.
- Экзаменационное задание.
- Подведение итогов курса, варианты дальнейшего обучения.
https://www.avalon.ru/SchoolAcademy/Course/?CourseID=2458