Содержание курса
Курс состоит из шести модулей — «недель», в ходе которых слушатели изучают конкретную тему или выполняют проект. Вначале даются ключевые знания о структуре и синтаксисе языка, и чем дальше, тем больше вы будете осваивать тонкости Python и возможности его практического применения.
В конце курса вас ждет итоговый проект, где вы самостоятельно реализуете сетевое приложение.
1. Введение в Python
На первой неделе участники курса узнают об особенностях языка и сфере его применения, выберут среду разработки и начнут программировать. Первый этап разбирает работу с базовыми типами: числами, логическими типами, строками и байтовыми строками. Участники научатся работать с потоками, разворачивать окружение и собирать программу из модулей и пакетов. Для тех, кто уже знаком с Python, этот модуль будет возможностью освежить и систематизировать свои знания перед более сложными темами.
Темы недели
- Знакомство с курсом
- Первые шаги
- Базовые типы и конструкции
- Организация кода и окружение
Задания по программированию
- Сумма цифр в строке
- Рисуем лестницу
- Корни квадратного уравнения
2. Структуры данных и функции
На второй неделе программа касается базовых структур данных, необходимых в любой программе: списков, кортежей, словарей и множеств. Участники увидят примеры использования этих конструкций, разберутся, как читать документацию, и сдадут тест по этому уроку.
Также вторая неделя касается функций и функционального программирования. Еще участники разберут работу с файлами, узнают, что такое декораторы и генераторы, научатся читать документацию по этим разделам.
Темы недели
- Коллекции (списки, кортежи, словари, множества)
- Функции (декораторы, генераторы)
Задания по программированию
- Key-value хранилище
- Декоратор to_json
3. Объектно ориентированное программирование
ООП — главный подход к построению сложных проектов на языке, который просто необходимо знать. Раздел состоит из трех уроков, два из них посвящены теории.
В теоретической части студенты узнают, что такое классы, экземпляры и методы, научатся простому и множественному наследованию, name mangling.
Темы недели
- Классы и объекты
- Наследование
Задания по программированию
- Реализация простого класса для чтения из файла
- Классы и наследование
4. Углубленный Python
Четвертая неделя касается работы с особыми классами и методами в Python. Она нужна для того, чтобы расширить понимание того, как все работает в языке. Студенты узнают, что такое магические методы, итераторы, контекстные менеджеры, дескрипторы и метаклассы
Отдельное внимание уделяется работе с документацией по этим разделам
Темы недели
- Особые методы классов
- Механизм работы классов
- Отладка и тестирование
Задания по программированию
- Файл с магическими методами
- Дескриптор с комиссией
5. Многопоточное и асинхронное программирование
Знания этой недели помогут в ответе на вопрос, как написать сетевую программу на Python. Без сетевого взаимодействия не обходится практически ни одна реальная задача в жизни.
Неделя касается работы с потоками, сетью и сокетами. В первой части модуля студенты узнают о создании процессов и потоков и об их синхронизации. Во второй части разберут работу с сокетами и клиент-серверную модель программы, таймауты, обработку сетевых ошибок и одновременную работу с несколькими соединениями.
Темы недели
- Процессы и потоки
- Работа с сетью, сокеты
- Асинхронное программирование
Задания по программированию
6. Итоговый проект
На этой неделе вы сможете воспользоваться всеми накопленными знаниями для решения практической задачи.
Задания по программированию
Постановка задачи
На предыдущей неделе слушатели курса разрабатывали сетевое приложение — клиента для сервера метрик, который умеет отправлять и получать всевозможные метрики. Пришло время финального задания — нужно реализовать серверную часть самостоятельно.
Сервер должен соответствовать протоколу, который был описан в задании к предыдущей неделе. Он должен уметь принимать от клиентов команды put и get, разбирать их и формировать ответ согласно протоколу.
Авторы курса
Александр Емелин
Разработчик Python, Go. Сторонник open-source. Автор достаточно крупного open-source проекта https://github.com/centrifugal/centrifugo.
Мне давно нравилась идея дистанционного способа обучения. Спасибо Mail.Ru Group за возможность поучаствовать в создании подобного проекта.
Александр Жебрак
Программист, преподает курс по Python в Технопарке МГТУ и Mail.Ru Group. Занимается машинным обучением, 4,5 года работал в Mail.Ru в отделе внутренней разработки, руководил разработкой интранета. Сейчас занимается проектами в области анализа биомедицинских данных в InsilicoMedicine.
Принял участие в создании курса, так как это замечательный опыт преподавания, работы с камерой, общения с коллегами. В ходе создания курса смог отточить навыки подачи чистого материала, это отличается от лекций в университете в рамках Технопарка.
Дмитрий Швеенков
Окончил Пензенский государственный университет. Работает в Mail.Ru Group, руководит командой разработки. В последние несколько лет занимается разработкой высоконагруженных сервисов на Python.
Решил взяться за создание курса, чтобы попробовать новый для себя формат задач.
Что влияет на стоимость драгметаллов
Прежде всего, на стоимость драгметалла на бирже влияет цена его добычи. Нужно учитывать, что времена, когда самородки золота величиной в килограммы можно было добывать в реке, давно прошли. Содержание металла в руде составляет от нескольких процентов до десятых долей процента. Это если брать все руды месторождения.
Палладий и платина очень часто добываются в залежах руд цветных металлов, вместе с медью и никелем. Не зря в России основным производителем этих металлов является Норильский никель.
Для получения драгметаллов нужно переработать огромное количество руды. Причем большую часть этой руды добывают в шахтах.
Рост мировых запасов (или падение) драгметаллов в сочетании со спросом также оказывает влияние на цены. Кроме ювелирной промышленности, драгметаллы используются в электронике, химической промышленности, машиностроении. Развитие новых технологий, повышение спроса всегда способствуют росту цен на бирже, так как быстро нарастить добычу не представляется возможным.
Динамика цен
Чтобы отследить поведение ставок, необходимо обратиться к графику. Он составляется за определенный период по данным биржи и показывает минимальную и максимальную стоимость, а также среднее значение, ¾ и ¼ цены, что удобно для анализа.
Как изменились котировки за последние 10 лет
Прошедшее десятилетие драгоценные металлы на бирже значительно колебались в стоимости. Первоначально показывали активный рост, однако сейчас я вижу постепенное падение. Несмотря на некоторое снижение цены, по сравнению с 2008 стоимость драгоценных металлов значительно выросла.
В 2008 наступил кризис, что послужило первой причиной снижения котировок не только золота, но и иных драгметаллов. За год до этого с марта по октябрь цена золота на бирже стремительно падала – с 1034 до 681 долларов. Однако вскоре актив пошел в рост. Абсолютный исторический максимум на бирже был установлен спустя три года после кризиса – $1923,7.
С сентября 2011 по декабрь 2015 котировки золота падали. Минимум составлял $1045. В 2017 году стоимость золота составляла 1250 долларов. По состоянию на 2019 год цена варьируется в пределах $1400. Ожидается, что осенью стоимость на бирже будет достигать 1450 долларов за унцию.
За 10 лет серебро подорожало на 661 %, золото на 614 %, платина на 320 %, а палладий всего на 152 %. Низкая стоимость последнего актива обусловлена его нестабильностью – постоянные взлеты и падения из-за трейдинговой деятельности.
https://youtube.com/watch?v=HUTMF0VU8E0
Пример торговли драгметаллами на бирже
Уровни поддержки-сопротивления чаще становятся точками, где котировки драгметаллов на бирже меняют свое направление движения, на сленге биржевиков они «отталкиваются». Например, цена на золото падает, но доходя до определенного уровня, снижение прекращается, тренд разворачивается или становится боковым.
После нескольких попыток пробить уровень поддержки часто котировки меняют направление и совершают рывок вверх. Подобные явления характерны и для восходящих движений на бирже, только тогда курс начинает понижаться после безуспешных попыток пробития линий сопротивления.
На графике золота три раза тестировалась поддержка приблизительно на уровне 1275 долларов, потом цена резко пошла вверх.
Можно также использовать пробойный метод или контрпробойный. Он основан на пробитии линий поддержки или сопротивления.
Пробойный метод заключается в открытии позиции по тренду, кода пробивается уровень сопротивления — покупка, линия поддержки — шорт (продажа).
Контрпробойный, если вы уверены, что цена, пробив уровень, уйдет назад. При превышении котировок над уровнем сопротивления — продажа, понижении ниже уровня поддержки — покупка.
Подробнее о новом запуске
Курс стартует 5 февраля 2018 года. В течение курса будут:
- живые лекции в московском офисе Mail.Ru Group, по понедельникам с 5 февраля, 19.00-22.00. Видео-записи лекций прежние (youtube), но к ним будут комментарии, дополнения и улучшения;
- статьи на Хабре прежние, вот первая. В статьях будут объявляться актуальные домашние задания и дедлайны по ним, информация будет дублироваться в группе ВКонтакте и в канале #mlcourse_ai в Slack OpenDataScience;
- соревнования, проекты, тьюториалы и прочие активности, описаны они в этой статье и в репозитории курса;
- также раз в неделю будем публиковать статьи на английском на Medium. Будет похоже на этот Kaggle Kernel про Vowpal Wabbit, только на Medium;
- с 23 апреля по 15 июля планируется совместное прохождение стэнфордского курса cs231n по нейронным сетям (подробности — в pinned items в канале #class_cs231n слэка ODS). Это будет уже второй запуск, сейчас как раз проходим, курс великолепен, домашние задания сложные, интересные и очень полезные.
Как подключиться к курсу?
Площадки для обсуждения
- канал #mlcourse_ai в Slack OpenDataScience. Основное общение здесь, можно задать любой вопрос. Главный козырь — авторы статей и домашних заданий тоже в этом канале, готовы отвечать, помогать. Но и флуда немало, так что смотрите pinned items перед тем как задать вопрос;
- группа ВКонтакте. Стена будет удобным местом для официальных объявлений.
Удачи! Напоследок хочу сказать, что все получится, главное — не бросайте! Вот это «не бросайте» вы сейчас пробежали взглядом и скорее всего даже не заметили. Но задумайтесь: именно это главное.
Чем курс отличается от других
1. Не для новичков
Часто вам будут говорить, что от вас ничего не требуется, через пару месяцев вы станете экспертом анализа данных. Я все еще помню фразу Andrew Ng из его базового курса «Machine Learning»: «вы не обязаны знать, что такое производная, и сейчас вы разберетесь, как работают алгоритмы оптимизации в машинном обучении». Или «вы уже почти что эксперт анализа данных» и т.д. При всем безмерном уважении к профессору — это жесткий маркетинг и желтуха. Вы не разберетесь в оптимизации без знания производных, основ матана и линейной алгебры! Скорее всего вы не станете даже Middle Data Scientist, пройдя пару курсов (включая наш). Легко не будет, и больше половины из вас отвалится примерно на 3-4 неделе. Если вы wannabe, но не готовы с головой погрузиться в математику и программирование, видеть красоту машинного обучения в формулах и добиваться результатов, печатая десятки и сотни строк кода — вам не сюда. Но надеемся, вам все же сюда.
В связи с вышесказанным мы указываем порог вхождения — знание высшей математики на базовом (но не плохом) уровне и владение основами Python. Как подготовиться, если этого у вас пока нет, подробно описано в группе ВКонтакте и тут под спойлером, чуть ниже. В принципе можно пройти курс и без математики, но тогда см. следующую картинку. Конечно, насколько дата саентисту нужно знать математику — это холивар, но мы тут на стороне Андрея Карпатого, Yes you should understand backprop. Ну и вообще без математики в Data Science — это почти как сортировать пузырьком: задачу, может, и решишь, но можно лучше, быстрее и умнее. Ну и без математики, конечно, не добраться до state-of-the-art, а за ним следить очень увлекательно.
2. Теория vs. Практика Теория и Практика
Курсов по машинному обучению полно, есть действительно классные (как специализация «Машинное обучение и анализ данных»), но многие сваливаются в одну из крайностей: либо слишком много теории (PhD guy), либо, наоборот, практика без понимания основ (data monkey).
Мы ищем оптимальное соотношение: у нас много теории в статьях на Хабре (показательна 4-я статья про линейные модели), мы пытаемся ее преподнести максимально понятно, на лекциях излагаем еще более популярно. Но и практики море — домашние задания, 4 соревнования Kaggle, проекты… и это еще не все.
3. Живое общение
Чего не хватает в большинстве курсов — так это живого общения. Новичкам порой нужен всего один короткий совет, чтобы сдвинуться с места и сэкономить часы, а то и десятки часов. Форумы Coursera обычно к какому-то моменту вымирают. Уникальность нашего курса — активное общение и атмосфера взаимоподдержки. В Slack OpenDataScience при прохождении курса помогут с любым вопросом, чат живет и процветает, возникает свой юмор, кто-то кого-то троллит… Ну а главное, что авторы домашних заданий и статей — там же в чате — всегда готовы помочь.
4. Kaggle в действии
Из паблика ВКонтакте «Мемы про машинное обучение для взрослых мужиков».
Соревнования Kaggle — отличный способ быстро прокачаться в практике анализ данных. Обычно в них начинают участвовать после прохождения базового курса машинного обучения (как правило, курса Andrew Ng, автор, безусловно, харизматичен и прекрасно рассказывает, но курс уже сильно устарел). У нас в течение курса будет предложено поучаствовать аж в 4 соревнованиях, 2 из них — часть домашнего задания, надо просто добиться определенного результата от модели, а 2 других — уже полноценные соревнования, где надо покреативить (придумать признаки, выбрать модели) и обогнать своих товарищей.
5. Бесплатно
Ну тоже немаловажный фактор, чего уж там. Сейчас на волне распространения машинного обучения вы встретите немало курсов, предлагающих обучить вас за весьма кругленькую компенсацию. А тут все бесплатно и, без ложной скромности, на очень достойном уровне.