Skip to content

Лекции и задания по курсу python

Notifications You must be signed in to change notification settings

dennysem/python-course

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python Course(3.6)

Об этом курсе: Python – простой, гибкий и невероятно популярный язык, который используется практически во всех областях современной разработки. С его помощью можно создавать веб-приложения, писать игры, заниматься анализом данных, автоматизировать задачи системного администрирования и многое другое. “Программирование на Python” читают разработчики, применяющие Python в проектах, которыми ежедневно пользуются миллионы людей. Курс покрывает все необходимые для ежедневной работы программиста темы, а также рассказывает про многие особенности языка, которые часто опускают при его изучении.

Курс рассчитан на как на людей, которые уже имели опыт программирования на python, так и новичков в этом деле. Однако, в рамках курса предусмотрены только лекции и домашние задания. Основная среда работы: ipython notebook. В ходе курса не объясняется, как и что устанавливать. Предполагается, что слушатели разбираются с этим сами.

Курс читается на кафедре 1С, МФТИ.

Оценка по курсу выставляется по следующей формуле: sum(балл(дз_i), i=1...10) + балл(дз_11) + доп_балл. оценка переводится в строковый маркер как обычно :).

Программа курса

Часть 1. Синтаксис.

  • Лекция 1. Python Введение. Основные структуры языка.
    Описание: на первой лекции разбираются основные конструкции языка, последовательности выполнения операций, циклы, переменные, объекты и их свойства (Identity, Type, Value). Garbage Collector. Изменяемые и неизменяемые объекты. Стандартные контейнеры. Функции. Библиотека collections.
    Задание: знакомство со стандартными контейнерами. Пишем свой классификатор спама.
  • Лекция 2. Python. Введение. Строки, кодировки, файлы.
    Описание: на второй лекции разбиаются кодировки, строки в python (стандартные функции str). Как работает интерпретатор со строками. Частично затрагиваются менеджеры контекста. Разбираются потоки ввода, вывода и ошибок.
    Задание: Работа с разными кодировками. Создание классификатора языка текстов.
  • Лекция 3. Python. ООП.
    Описание: третья лекция включает разбор основных принципов ООП в питон. Классы и экземпляры. Наследование в питон и алгоритм MRO. Магические методы в питон. Объясняется как осуществляется доступ к атрибутам класса.
    Задание: Знакомство с магическими функциями в питон. Реализация классов CounterGetter, Vector и Table.
  • Лекция 4. Области видимости. Замыкания. Декораторы.
    Описание: на лекции разбираются анонимные функции, области видимости переменных и контексты. Объяснение правила LEBG. Приводятся и объясняются сложные примеры замыканий с атрибутами и методами. Разбирается работа декораторов в питон. Стандартная библиотека functions. Классы декораторы и функции декораторы.
    Задание: написать следующие декораторы - кэширования результатов функции (@cached), проверки типов аргументов функции (@checked) и декоратор логирования выполнения функции (@Logger).
  • Лекция 5. Исключения, модули, регулярные выражения.
    Описание: в рамках данное лекции рассматриваются типы ошибок в питон. Как наклабывать ограничения на работу программы и __DEBUG__ режим. Исключения и их обработка в питон. Создание собственных исключений. Стандартные библиотеки для работы с исключениями. Подробный разбор работы менеджеров контекста в питон. Создание и импорт модулей и пакетов. Дается базовое представление о регулярных выражениях и как с ними работать в питон (модуль re).
    Задание: реализуйте два менеджера контекстов: ContextTimer для отслеживания времени выполнения и Transaction для "безопасной" обработки данных. Напишите регулярное выражение для извлечения номеров.
  • Лекция 6. Итераторы и генераторы.
    Описание: на этой лекции мы узнаем, как работает цикл for, что такое итератор и протоколы итерирования. Как создавать собственные итераторы. Кратко будет рассмотрено такое свойство итеаторов как исчерпаемость. Объяснение устройства и работы генераторов. Встроенные генераторы map, filter, enumerate, zip. Стандартная библиотека для работы с генераторами itertools.
    Задание: напишите генератор случайных диалогов (можно несвязных).
  • Лекция 7. Дескрипторы и мета классы.
    Описание: на этой лекции вы почувствуете все мощь питона (всю боль) и узнаете, как работают декораторы property, что такое дескриптор данных. Подробно будет рассмотрен алгоритм получения атрибутов в питон, как использовать собственные дескрипторы данных в своей программе. Во второй части лекци будут рассмотрены следующие вопросы: что такое type в питон, как создаются классы (что происходит, когда мы пишем class SomeClass(object):), что такое мета класс, применение мета классов. В том числе будет рассмотрен "хороший метод" (more power!) создания дескриптора с помощью мета класса.
    Задание: напишите мета класс PropertyCreator для создания свойств класса. Напишите метакласс InstanceCountExeptioner, который будет следить за количеством экземпляров класса, использующих его. Напишите метакласс JSONClassCreator , который будет по json представлению строить новый класс и обратно.

Часть 2. Приложения.

  • Лекция 8. Python и WEB.
    Описание: в первой части лекции вы узнаете об "устройстве интернета". Клиент-серверное взаимодейстие. Краткое описание протокола http. "Вводные" слова об HTML или как браузеры показывают веб-странички. Будут рассмотрены запросы методами get и post. Как создать свой клиент на питон, или как сделать запрос данных данных у википедии или гугла. Рассказано как майнить данные и парсить HTML в питон (lxml и BeautifulSoup). Как написать собственный сервер на питон (bottle). Во второй части лекции будет доклад о проекте 2kinopoisk.ru с примерами и алгоритмами реализации конкретных подзадач при создании сайта и проблем с этим связанных.
    Задание: предлагается создать сервер, который содержит в себе библиотеку книг. Также требуетсяпроверить гипотезу про статьи википедии.
  • Лекция 9. Multi-thread programming with python
    Описание: На данной лекции даются основные знания по потокам и процессам. Разбираются библиотеки subprocess, threading, multiprocess. Приводятся краткие пояснения работы Global Interpreter Lock (GIL).
    Задание: в этом задании требуется написать многопоточное приложение, которое читает статьи на вики и проводит морфологический анализ слов с помощью библиотеки pymorph2.
  • Лекция 10. Python и data и ml.
    Описание: в первой части рассказывает о библиотеке numpy: рассматриваются основные приемы работы с массивами, модуль linalg и как с помощью numpy решать оптимизационные задачи. Во второй части приводятся примеры работы с pandas, matplotlib и seaborn. В небольшой завершающей части рассказывается про sklearn и Pipeline.
    Задание: в первой части задания предлагается написать программу, которая интегрирует заданную функцию, зависящию от параметров и построить зависимость получившейся функции от парамера. Во второй части предлагается решить задачу линейного программирования.
  • Лекция 11. Faster python.
    Описание: в первой части данной лекции расказывается о том, как можно оценивать время работы программы и как ускорить свой код. Подробно разбирается cython. Также рассмотрен пример работы pypy. В последней части лекции объясняется как можно создавать свои модули для python на c/c++ с помощью ctypes или Python.h.
    Задание: является дополнительным. Предлагается ускорить реализации методов из предыдущего или первого задания (ускорить обучение классификатора и (если возможно) саму классификацию).

Authors

  • Антон Емельянов - МФТИ, кафедра АТП, аспирант 1 года - [email protected]

Литература и полезные ссылки

книги:

ссылка на ссылки :)

About

Лекции и задания по курсу python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 99.5%
  • Other 0.5%