Skip to content

Python lectures and tasks for MIPT students (in russian)

License

Notifications You must be signed in to change notification settings

GrebenkovaO/mipt-python

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Материалы по курсу "Практикум по программированию на языке Python"

Курс преподаётся студентам третьего года обучения кафедры ИАД факультета ФУПМ МФТИ (ГУ).

Автор: Мурат Апишев (facebook, machinelearning.ru)

Правила курса:

  • Курс проводится в формате "лекции + практические задания"
  • Зачёт по курсу выставляется по результатам выполнения заданий
  • Для доступа к зачёту необходимо выполнить все практические задания и получить за них в сумме не менее 35 баллов. Форма самого зачёта будет определена в дальнейшем, для гарантированного получения зачёта автоматом нужно набрать в сумме не менее 45 баллов.

Формулировки практических заданий:

Результаты выполнения практических заданий:

Тема 1: Введение в язык программирования Python

Содержание:

  • мотивация изучения языка
  • язык Python, история, особенности, сравнение с другими языками
  • основной дистрибутив, редакторы
  • запуск скриптов
  • введение в язык, базовый синтаксис
  • оператор вывода, ввод с клавиатуры
  • понятия объекта, переменной и типа
  • операторы присваивания
  • встроенные неизменяемые типы данных: числа, строки, кортежи
  • встроенные изменяемые типы данных: списки, словари, множества
  • работа с файлами, файловый менеджер контекста
  • условный оператор, тернарный условный оператор
  • операторы циклов while и for, операторы break, continue, else, pass
  • именование переменных
  • импорт модулей
  • функции exec и eval

Ссылки на материалы:

Тема 2: Модель памяти, операции над встроенными типами данных

Содержание:

  • стадии жизни объекта
  • сборщик мусора, циклические и слабые ссылки, гарантии
  • изменяемые и неизменяемые объекты, ссылки на них
  • поверхностное и глубокое копирование
  • идентификатор объекта, операторы равенства и идентичности
  • атрибуты объекта, функция dir
  • числовые типы данных
  • побитовые операции
  • операции над множествами
  • продвинутое индексирование
  • форматирование строк
  • регулярные выражения, модули re и regex
  • подробнее о файлах, модуль os.path

Ссылки на материалы:

Тема 3: Пользовательские и встроенные функции, итераторы и генераторы

Содержание:

  • функции range, zip, enumerate
  • базовый синтаксис функций, возвращаемое значение, рекурсия
  • передача аргументов в функцию
  • области видимости переменных, глобальные переменные, правило LEGB
  • ключевые слова global и nonlocal
  • функции-замыкания
  • анонимные функции
  • функции map, filter, sorted, functools.reduce
  • итерирование, функции iter и next
  • генераторные функции, оператор yield
  • модуль itertools

Ссылки на материалы:

Тема 4: Основы ООП, особенности ООП в Python

Содержание:

  • парадигма объектно-ориентированного программирования
  • понятия класса, объекта класса
  • понятия интерфейса и абстрактного класса
  • особенности реализации принципов ООП в Python
  • методы __init__ и __new__, параметр self
  • методы и атрибуты, функции для работы с атрибутами
  • магические методы классов, их перегрузка, менеджеры контекста
  • наследование
  • перегрузка методов
  • полиморфизм, duck typing
  • сохранение объектов классов, модуль pickle
  • исключения, обработка исключений

Ссылки на материалы:

Тема 5: Продвинутое использование ООП, проектирование кода

Содержание:

  • проектирование кода
  • виды отношений между классами
  • принципы SOLID
  • пример применения принципов для улучшения кода
  • множественное наследование, порядок распознавания методов
  • вызов родительских методов, функция super
  • статические методы классов
  • понятие шаблона проектирования
  • шаблон singleton
  • шаблон mixin
  • шаблоны фасад, адаптер, DAO
  • понятие фабрики, шаблон простая фабрика
  • шаблоны фабричный метод и абстрактная фабрика
  • шаблон декоратор
  • декораторы функций и классов в Python
  • метаклассы в Python

Ссылки на материалы:

Тема 6: Представление, обработка, анализ и визуализация данных

Содержание:

  • представление плотных матриц в Python, базовые операции
  • библиотека numpy, описание
  • методы создания массива numpy.ndarray
  • классы ndarray и matrix
  • изменение размерности массивов
  • индексирование массовов
  • арфметические операции над массивами, broadcasting
  • матричные операции над массивами, сравнение с наивной реализацией
  • агрегирующие функции
  • конкатенация массивов
  • примеры дополнительных полезные функции numpy
  • примеры постановок и решений задач на векторные и матричные операции
  • DataFrame в библиотеке pandas
  • доступ к элементам, индесирование
  • pandas.DataSeries, операции над столбцами, выборка по условию
  • создание и редактирование DataFrame, итерирование, конкатенация
  • примеры полезных атрибутов и функций DataFrame
  • базовая визуализация на основе DataFrame
  • библиотека matplotlib
  • простейшие графики в matplotlib, форматирование
  • диаграммы scatter для отображения двумерной выборки

Ссылки на материалы:

Тема 7: Введение в инструменты для оптимизации и машинного обучения

Содержание:

  • введение в модуль scipy.linalg
  • введение в модуль scipy.optimize
  • введение в модуль scipy.stats
  • понятие статистического теста, T-критерий
  • разреженные матрицы в scipy.sparse
  • напоминание основных базовых идей ML, библиотека sklearn
  • напоминание: линейные модели, метрика качества классификации
  • линейные модели в sklearn, выбор модели
  • кроссвалидация, подбор параметров по сетке, подсчёт метрик
  • лог-регрессия, линейный SVM, Kernel SVM в sklearn
  • особенности данных для линейных моделей
  • напоминание: метрические модели (knn, k-means)
  • проблемы k-means, частичное обучение в sklearn
  • напоминание: решающие деревья
  • виды композиций в sklearn
  • Random Forest в sklearn, основные параметры RF
  • out-of-bag score для RF, оценка важности признаков
  • градиентный бустинг в sklearn, основные параметры
  • библиотека xgboost для градиентного бустинга, важные параметры
  • библиотека catboost для градиентного бустинга
  • задача понижения размерности, SVD разложение в sklearn

Ссылки на материалы:

About

Python lectures and tasks for MIPT students (in russian)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 99.6%
  • Smarty 0.4%