Программирование на Python от МФТИ и mail.ru

Сегодня завершила курс Программирование на Python от МФТИ и mail.ru.

Содержание курса

WEEK 1: Введение в Python

Описание coursera: На первой неделе вы познакомитесь с языком, основными конструкциями и базовыми типами. Настроите окружение для работы и выберете среду разработки.

Задания:

  • Сумма цифр в строке
  • Рисуем лестницу
  • Корни квадратного уравнения

В целом, тут самые основы - базовые типы данных (числа, строки), if/else, for и подобное.

WEEK 2: Структуры данных и функции

Описание coursera: В этой неделе вы узнаете про новые типы данных — коллекции, познакомитесь с функциями, а так же научитесь использовать функциональное программирование в Python.

Задания:

  • Key-value хранилище
  • Декоратор to_json

Первая часть тем также по основам - рассматриваются различные коллекции объектов: списки, кортежи, словари, множества.

Вторая часть посвящена функциям и тут довольно резво идет переход от базовых функций до декораторов и генераторов.

Предполагаю, что декораторы сюда добавили из-за того, что в дальшейшем, в ООП они будут использоваться.

WEEK 3: Объектно-ориентированное программирование

Описание coursera: В третьей неделе вас ждёт погружение в мир объектно-ориентированного программирования на Python. Вы научитесь создавать свои классы, применять наследование и обрабатывать исключения в программах.

Задания:

  • Реализация простого класса для чтения из файла
  • Классы и наследование

Лекции недели разбиты на три части. Первые две “Классы и объекты” и “Наследование” посвящены ООП, а последняя часть работе с исключениями.

WEEK 4: Углубленный Python

Описание coursera: В этой неделе мы более подробно познакомимся с тем, как работают классы в Python. Узнаем, как создавать свои классы, которые поддерживают стандартные протоколы и методы. Научимся отлаживать и тестировать свои программы.

Задания:

  • Файл с магическими методами
  • Дескриптор с комиссией

Сначала рассматриваются “магические” методы классов, то есть те, которые выглядят таким образом: __add__. Среди них методы, которые нужны для создания итераторов и контекстных менеджеров.

Затем рассматриваются дескрипторы и метаклассы. Достаточно обзорно.

И последняя тема “отладка и тестирование” познакомит с unittest и pdb, но на уровне что вот есть такие модули и примерно такое можно с ними делать.

WEEK 5: Многопоточное и асинхронное программирование

Описание coursera: Пятая неделя посвящена одной из самых актуальных тем современного мира разработки — асинхронному и многопоточному программированию. Вы узнаете про процессы и потоки, а также научитесь писать асинхронный код с помощью asyncio.

Задания:

  • Клиент для отправки метрик

Это последняя неделя в которой есть теория. Тут сначала рассматриваются потоки, процессы, GIL и в целом вопросы синхронизации потоков.

Затем, вторая часть посвящена работе с сокетами. Тут будут показаны примеры базовых сервера и клиента, а также показано как обрабатывать исключения и работать с таймаутами. И в конце демонстрация сервера, который может принимать несколько соединений.

Последняя часть посвящено асинхронному программированию. Тут все начинается с select, затем рассматриваются отличия интераторов и генераторов, генераторов и сопрограмм. И в конце рассматриваются основы asyncio.

WEEK 6: Финальный проект

Описание coursera: На последней неделе курса вам предстоит реализовать полноценное серверное приложение для получения метрик от множества клиентов.

Задания:

  • Сервер для приема метрик

На последней неделе нет теории, только финальное задание.

Мои впечатления

Не могу сказать, что для меня курс был полезным. Практически все темы я знала хорошо, а те, которые знаю поверхностно, и в курсе давались еще более поверхностно.

Я пошла на курс из-за последней темы. К сожалению, в курсе, кроме общей информации и примеров из документации, почти ничего не было. Но это не проблема курса, так как он расчитан на другую категорию слушателей.

Возможно, для целевой аудитории курса это как раз хороший обзор различных областей Python.

С другой стороны, мне кажется, что для тех, кто пришел из другого языка, не хватает информации о том какие идиомы приняты в Python, что считается идеологически правильным.

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

Еще интересно то, что курс читали несколько инструкторов. Так что, скорее всего, кто-то понравится больше, кто-то меньше

Так как я знала почти все темы, то большую часть курса слушала на скорости 1.5-2.

По времени на весь курс у меня ушло 12-14 часов. Но конечно понадобится больше времени, если вы учите Python почти с нуля.

stats

Резюме

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

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

Впрочем, если вы уже неплохо знаете Python, в курсе также будет мало полезного. На основах будете скучать, а на новых темах будет ощущение недосказанности.