Как устроен курс
Каждый модуль состоит из последовательности уроков, после каждого появляется inline quiz, в M01+ модулях добавляются code challenges, а в конце модуля — exam. Этот урок объясняет каждую механику, чтобы вы не тратили время на разгадывание интерфейса.
Один урок
Урок — это страница MDX. Структура: prose + диаграммы (composed из примитивов <DataBox> / <FlowRow> / <Grid>) + callouts (note / tip / warning / danger) + occasional code blocks с подсветкой синтаксиса. В конце страницы автоматически рендерится секция inline quiz — её НЕ надо специально вызывать в MDX, layout сам её показывает по факту наличия parallel JSON-файла.
Длина урока — 8–30 минут чтения; сложность отмечена в frontmatter (beginner / intermediate / advanced). Beginner и intermediate уроки можно проходить без блокирующих предусловий, advanced опираются на предыдущие модули.
Inline quiz
После каждого урока — 2–4 вопроса, типы: multiple-choice или true-false. Минимум 40% вопросов в каждом quiz — applied или analytical Bloom level (вопросы вида «разберите этот случай» / «что произойдёт если»), остальные — conceptual.
Каждый вопрос имеет пояснение (explanation) на 2–3 предложения, которое появляется после ответа. Порядок вопросов и опций seeded-shuffling — при повторном прохождении quiz вопросы перемешиваются стабильно, но не одинаково с первой попыткой.
Code challenge
Начиная с M01, в большинстве модулей появляется 1–2 code challenge задачи. Вы пишете Python в браузерном editor’е, нажимаете Run для прогона ваших тестов или Submit для финальной проверки против скрытых тестов. Тесты исполняются Pyodide-воркером в browser (не на сервере), и результат возвращается за 1–10 секунд для типичных задач.
Два режима тестирования
Режим 1: stdout-mode. Ваш код печатает результат через print(...), тест сравнивает stdout с ожидаемым выходом по matchMode. Используется для задач вида «выведите…».
Режим 2: function-call-mode. Вы определяете функцию def solve(...) (имя именно solve — это контракт), тест вызывает solve(тестовый_вход) и сверяет return value с expectedOutput. Используется для алгоритмических задач, где stdout не нужен.
Стартовый код в editor’е содержит правильный skeleton для каждого режима — придерживайтесь его (особенно имени функции solve для function-call mode).
Режимы сравнения
Поле matchMode в test case определяет, как сравнивается ваш вывод и ожидаемый:
exact— побайтовое равенство. Используется по умолчанию, когда вывод полностью детерминированcontains— ваш вывод должен содержать ожидаемую строку как substring. Применяется когда вывод включает timestamp / UUID / float-precision и нужна частичная проверкаnot_contains— ваш вывод НЕ должен содержать запрещённую строку (например, FAIL когда учащийся хардкодит ответ)
Если challenge даёт MISSING test или незнакомую ошибку, посмотрите на условие задачи и hint в комментариях starterCode — там часто прямо указан подход.
Module exam
После всех уроков модуля — exam: 10–15 вопросов, ≥60% applied/analytical Bloom level. PassThreshold по умолчанию 70%. Можно retake без ограничений; вопросы рандомизируются (seeded), порядок options перемешивается.
Каждый вопрос exam’а содержит studyHint — точную отсылку к уроку и разделу, куда вернуться при провале. Это ускоряет повторение: не надо угадывать, какой урок re-read’ить, exam сам говорит.
Прогресс и сертификат
Прогресс по урокам, quizzes и code challenges сохраняется в browser local storage (для anonymous-пользователей) и на сервере (для авторизованных). Завершение всех модулей открывает PDF-сертификат и achievement badges на dashboard.
M00 это free preview
M00 (этот модуль) — без paywall: вы дочитали до сюда без оплаты и без авторизации. Это оригинальный проектный замысел: оценить depth, структуру и тон курса перед покупкой.
Модули M01–M13 требуют one-time payment 500 Telegram Stars. Оплата интегрирована через Telegram Stars API, обрабатывается на стороне Telegram, без банковских карт и подписок. Один раз — навсегда (вы получаете lifetime access ко всем 14 модулям и future-обновлениям курса).
Если оцениваете — пройдите M00 целиком, сделайте module exam, и решайте.
Параллельные курсы
Этот курс — Core Python для Data Engineer’а; для full-stack DE-профиля рядом авторизуются курсы по distributed processing, OLAP, query engines, форматам хранения. Cross-course → Spark 01/01 spark-overview — distributed processing в JVM; PySpark использует Python как driver-language. Cross-course → DataFusion 00/02 what-is-datafusion — Rust embedded query engine; concepts из M05 (генераторы) и M10 (pandas/Polars) напрямую пересекаются с DataFusion’s Arrow streaming model.
Ключевые выводы
- Урок → inline quiz → code challenge (с M01) → module exam → certificate
- Code challenges имеют два режима: stdout-mode (print → expected) и function-call-mode (
def solve(...)→ return value сверяется) - M00 — free preview, M01–M13 — paid (500 Telegram Stars one-time)