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

Санкт-Петербург, весна 2021

Описание

Погружение в программирование на Питоне. Продвинутый курс.

Еще один курс по Питону?

Да.

Чем он будет отличаться от других?

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

Так как Питон — очень прикладной язык, мы будем стараться разрабатывать прикладные программы / делать мини-исследования в разных областях. Нашим девизом будет автоматизация любой человеческой деятельности, включая профессию программиста.

Будут получены навыки программиста:

  • Парадигмы программирования и паттерны.
  • Создание и использование библиотек.
  • Манипуляции данными.
  • Работа с API.
  • Работа с документно-ориентированными базами данных.
  • Асинхронность.
  • Серверная автоматизация.
  • Автоматизация браузера (для тестировщиков, например).
  • Как из песочницы попадать в продакшн.

Будут затронуты области деятельности человека для создания программ:

  • Журналистика.
  • SMM.
  • Социология.
  • Биология.
  • Литература.
  • Экономика.

То есть на курс надо приходить уже умея программировать на Питоне?

Нет, нужны только навыки алгоритмизации на любом из языков.

В начале наш ждет Курс молодого бойца (КМБ) на 2-3 недели, где будет предложено получить базу по Питону и освоиться с языком и стилем программирования. Будет много небольших задач с автопроверкой.

После чего чем дальше, тем больше будет индивидуального подхода, code-review, возможной работы в командах.

Домашки будут?

Да, не считая КМБ, будет около 8 домашних работ. Темы домашек будут подобраны таким образом, чтобы вы могли, если вас это заинтересует, сделать их основой для хобби-проекта, но можно остановиться и на формальных признаках сдачи задания.

Домашки будут сопровождаться разборами после того, как будет пройден дедлайн.

Я знаю Питон, дайте мне все домашки, я послезавтра их вам принесу, а вы мне поставите зачет...

Авторы курса за ритмичность, кроме того, некоторые ДЗ физически нельзя сделать за 1 день. Например, нужно собирать данные около двух недель скриптом, а потом применить красивый анализ.

Так что, извините, но нет. Если вы лихой д’Артаньян, помогите коллегам с совместными домашками или чуть глубже проникните в предметную область проекта. У нас найдется много интересной работы для вас.

Какие критерии итоговой оценки?

Если вы все делаете отлично — получаете 5. Если хорошо — 4.

Если интересует конкретная формула:

if прошли_КМБ:

    return round(1 + 0.5 * (количество_зачетов_по_домашкам))
return 0

В любом случае, мы напоминаем, что KPI для вас, а не вы для KPI.

Здесь будьте аккуратнее. Округление и итоговая формула полны тайн.

Позвольте немного рассказать (Ууу... учеба уже началась).

По факту, round из всех типов округления (а их много, все крутится вокруг того, что делать с цифрой 5), выбирает Round half to even.

If the discarded digits represent greater than half (0.5) the value of a one in the next left position then the result coefficient should be incremented by 1 (rounded up). If they represent less than half, then the result coefficient is not adjusted (that is, the discarded digits are ignored).

Otherwise (they represent exactly half) the result coefficient is unaltered if its rightmost digit is even, or incremented by 1 (rounded up) if its rightmost digit is odd (to make an even digit).

То есть, если цифра сразу после цифры округления = 5, то округляем до ближайшего четного.

Мы получали вот такие результаты:

1.5 2
2.5 2
3.5 4
4.5 4
5.5 6
6.5 6

Это не Питон такой странный, эта модель округления по умолчанию в IEEE 754. Еще его называют банковским округлением, оно препятствует накоплению ошибок, когда округлений очень много в операционной деятельности.

Сделать привычное нам по школе округление (round half up):

>>> import decimal
>>>
>>> context = decimal.getcontext()
>>> context.rounding = 'ROUND_HALF_UP'
>>>
>>> for i in range(1, 10):
    k = i + 0.5
    print(k, round(Decimal(k), 0))

 
1.5 2
2.5 3
3.5 4
4.5 5
5.5 6
6.5 7
7.5 8
8.5 9
9.5 10

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

Что еще?

Возможно(!) в середине курса будет хакатон, а ближе к концу — война ботов от каждого слушателя и преподавателя с турнирной таблицей в какую-нибудь настолку.

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

Авторы стремятся актуализировать контент каждый год, поэтому будут новые домашки, переписанные презентации (в этом году в новой, темной теме).

Добро пожаловать! Ставьте лайк, жмите на колокольчик Записывайтесь!

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