• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
11
Декабрь

Программирование на Python

2021/2022
Учебный год
RUS
Обучение ведется на русском языке
4
Кредиты
Статус:
Курс обязательный
Когда читается:
1-й курс, 1 модуль

Преподаватели

Программа дисциплины

Аннотация

Язык программирования Python является одним из самых популярных языков современности. Python используется для написания кода в самых разных сферах, например, в бэкенд-разработке, анализе данных и машинном обучении. Это обусловлено простотой языка и обширной экосистемой. В курсе будет рассмотрен синтаксис языка, основные структуры данных, основы ООП и показаны некоторые применения языка Python.
Цель освоения дисциплины

Цель освоения дисциплины

  • Понимать фундаментальные принципы объектно-ориентированного программирования и уметь применять их в Python
  • Иметь навыки программирования на языке высокого уровня, декомпозиции кода, придерживаться стиля написания программ
  • Понимать основные сферы применения языка Python, уметь оценивать производительность кода и эффективность использования языка для решения задачи из конкретной области
Планируемые результаты обучения

Планируемые результаты обучения

  • Знать синтаксис языка Python, основные типы
  • Знать основные структуры данных в Python, сложность выполнения операций при работе с ними
  • Иметь навыки работы со сторонними библиотеками, уметь быстро разбираться в API и создавать MVP
  • Уметь работать со стандартной библиотекой языка, знать основные модули
  • Понимать основы многопоточности и уметь работать с реализацией этой идеи в языке Python
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Немного об истории. Hello, world! Понятие переменной, целочисленная арифметика. Представление целых чисел в памяти компьютера. Битовые операции. Питон как простейший калькулятор. Команда id. Модель copy-on-write. Операторы сравнения, присваивания. Правила именования переменных.
    Решение проблем с установкой интерпретатора языка. Обзор работы с Python в режиме интерпретатора, Jupyter notebook, IDE/текстовым редактором. Базовые навыки работы с командной строкой. Практика работы с целыми числами. Целочисленное деление с отрицательными числами в языке Python. Команды input() и print(). Знакомство с Яндекс.Контестом. Решение задач.
  • Логический тип. None. Условный оператор. Ленивые вычисления. Понятие приоритета операций. Закон де Моргана. Вложенные условия, базовое определение области видимости переменной
    Продолжение знакомства с Яндекс.Контестом. Оптимальность написания условий. Отступы в Python. Инструкция type. Ключевое слово pass. Использование комментариев. Решение задач.
  • Цикл while. Использование break, continue, else. Вещественные числа. Представление вещественных чисел в памяти компьютера. Сравнение вещественных чисел. Строки. Сравнение строк, их обозначение.
    Использование бесконечных циклов. Варианты работы со стандартным потоком ввода. Алгоритм Евклида для НОД. Нахождение делителей числа. Экспоненциальная форма записи вещественных чисел. Ошибки, связанные с округлением вещественных чисел. Учимся гуглить на примере decimal. Решение задач.
  • Списки и строки. Изменяемые и неизменяемые типы. Срезы, индексы, операции над строками и списками (методы). Форматирование строк. Кортежи. Хранение массивов в памяти компьютера (и динамических массивов соответственно)
    Основные методы строк. Работа с docs.python.org. Инструкция dir. Нововведения Python 3.9. Изменение неизменяемых объектов. Конвертации между строкой и списком. F-строки. Методы форматирования строк, printf-like аргументы. Спецсимволы. Shallow copy и deep copy. Решение задач.
  • Функции. Передача параметров в функцию. Глобальные и локальные переменные. Вложенные функции. Рекурсия. functools.partial. Функции all и any. Понятие стека вызовов. Декораторы, параметрические декораторы
    Области видимости переменных. Ключевое слово global. *args. Рекурсивный алгоритм Евклида. Переполнение стека. Команды bash ls, cd, pwd, find. Работа с файлами, файловой системой. Рекурсивный обход директории. Решение задач.
  • Цикл for. Инструкция range. range в Python2. Генераторы. List comprehension. Понятие iterable-объекта. Лямбда-функции. Итераторы. Основы обработки ошибок
    Написание генератора range. Взаимозаменяемость циклов, comprehensions. Применимость этого подхода. Модуль itertools. Решение задач.
  • Словари и множества. Понятие хэша, хэштаблицы, методы разрешения коллизий. Модуль collections, обзор структур данных.
    dict/set comprehension, frozenset. Основные методы. Кейсы использования .get(), .setdefault(), .pop(). Форматы данных JSON/pickle. Решение задач.
  • Основы функционального программирования. Сортировки. Бинарный поиск.
    Использование модуля bisect, параметра key в сортировке. Использование operator.itemgetter. Решение задач.
  • Основы ООП. Классы, объекты, атрибуты, методы. Понятие конструктора, callable. Основные magic(dunder)-методы. Статические методы, методы класса.
    Новый взгляд на dir. Написание класса комплексных чисел. Переопределение методов. Декоратор property. Решение задач.
  • Наследование. Множественное наследование. Композиция классов. Абстрактные классы. Декораторы классов.
    Создание приложения с графическим интерфейсом с использованием библиотеки Tkinter
  • Исключения. Обработка исключений. Пользовательские исключения. Контекстные менеджеры. Класс-итератор. Устройство базовых протоколов HTTP
    Сбор данных со сторонних сайтов. Регулярные выражения. Модуль requests. Основы работы с API.
  • Основы многопоточности и асинхронности. Понятия процесса, потока. Описание клиент-серверной архитектуры.
    Создание бота ВКонтакте/telegram
  • Система модулей языка Python. Утилита pip. Использование виртуального окружения. Модуль argparse. Устройство CPython.
    Отладка программ в PyCharm. Тестирование программ: asserts, doctest, unittest. Краткий обзор PEP8.
Элементы контроля

Элементы контроля

  • неблокирующий Накопленная оценка
    Формула накопленной оценки: Накоп = 0.1 * (дз1 + дз2 + дз3 + дз4 + дз5 + дз6 + дз7 + дз8 + дз9 + Пр1 + Пр2 – МИН(дз1, дз2, дз3, дз4, дз5, дз6, дз7, дз8, дз9, Пр1, Пр2)) Из 11 оценок не учитывается минимальная. В каждом ДЗ могут быть бонусные баллы, за счет чего за ДЗ оценка может быть больше 100%.
  • неблокирующий Домашние задания
    На курсе предусмотрены 9 домашних заданий
  • неблокирующий Проекты
    На курсе предусмотрено два проекта с устной защитой
  • неблокирующий Экзамен
    Проходит дистанционно в системе Яндекс.Контест с прокторингом.
Промежуточная аттестация

Промежуточная аттестация

  • Промежуточная аттестация (1 модуль)
    0.7 * Накопленная оценка + 0.3 * Экзамен
Список литературы

Список литературы

Рекомендуемая основная литература

  • Лучано Рамальо - Python. К вершинам мастерства - Издательство "ДМК Пресс" - 2016 - 768с. - ISBN: 978-5-97060-384-0 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/93273

Рекомендуемая дополнительная литература

  • Eric Matthes. (2019). Python Crash Course, 2nd Edition : A Hands-On, Project-Based Introduction to Programming: Vol. 2nd edition. No Starch Press.