Модуль 3. Python і перенесення мислення
Перенести сформовані інженерні звички у Python
Модуль має один маршрут. Кожен блок завершується дією, яку ви вже можете виконати самостійно.
переносити знайомий алгоритм між C++ і Python
обирати колекції Python за властивостями задачі
зберігати декомпозицію, тестування та налагодження
працювати з винятками, файлами й модулями
самостійно збирати завершений конвеєр обробки даних
Детальний маршрут
Перехід на Python
Після блоку. Після блоку ви переносите знайомі алгоритми у Python та відтворюєте notebook з чистого стану.
Л11Python як друга мова: перенесення мисленняЛекція. Переносимо сформовані алгоритмічні навички у Python та вивчаємо модель виконання notebook.
ЛР24Знайомі алгоритми у PythonЛабораторна. Відомі циклові обчислення переносяться з C++ у Python без зміни самого алгоритмічного задуму.
ЛР25Керування виконанням у Python і читання tracebackЛабораторна. Короткі Python fragments перевіряють truthiness, зміну стану та runtime conversion error.
ЛР26Відтворюваний notebook без прихованого стануЛабораторна. Notebook містить залежні обчислення, а старе значення змінної робить випадковий запуск оманливим.
Колекції й текст
Після блоку. Після блоку ви обираєте структури Python за властивостями задачі та пояснюєте наслідки aliasing.
Л12Колекції Python і текстЛекція. Обираємо list, tuple, set і dict за властивостями задачі та застосовуємо comprehensions.
ЛР27Ітерація, `enumerate` і `zip`Лабораторна. Мітки, основні значення та друга числова послідовність треба обходити без ручного індексування.
ЛР28Нормалізація тексту, `set`, `dict` і частотний аналізЛабораторна. Текст спочатку нормалізується, а потім аналізується через множини й словники для належності, унікальності та частот.
ЛР29Спільні списки, копії та тести змінЛабораторна. Два імені посилаються на один list, а третє отримує незалежну копію перед наступною мутацією.
Функції, тести й помилки
Після блоку. Після блоку ви зберігаєте декомпозицію й тестування та формулюєте явну політику винятків.
Л13Функції, тести і винятки у PythonЛекція. Зберігаємо культуру декомпозиції, тестування та явної політики помилок.
ЛР30Функції без прихованого стану notebookЛабораторна. Обчислення працює в notebook лише тому, що читає global names із попередніх комірок.
ЛР31Підказки типів, тести й аналіз правдоподібного кодуЛабораторна. Коротка function виглядає правдоподібно, але один boundary або accumulator rule дає неправильну поведінку.
ЛР32Винятки й пакетна перевірка данихЛабораторна. Пакет рядків містить коректні та некоректні цілі числа. Expected data errors не повинні зупиняти всю обробку.
Ліниве опрацювання і повторна робота
Після блоку. Після блоку ви порівнюєте рекурсію з ітерацією та будуєте генераторні конвеєри.
Л14Генератори, рекурсія й ефективність у PythonЛекція. Порівнюємо ліниве та матеріалізоване опрацювання і повертаємося до вартості рекурсії.
ЛР33Рекурсія і повторна роботаЛабораторна. Функція рахує кількість способів дійти до позиції `n`, використовуючи кроки 1 або 2.
ЛР34Comprehensions і генераториЛабораторна. Потрібно відфільтрувати числа, піднести їх до квадрата та використати результат один раз або кілька разів.
Файли, модулі й фінальна інтеграція
Після блоку. Після блоку ви збираєте багатофайлову програму та виконуєте фінальну інтегровану задачу.
Л15pathlib, модулі й фінальний конвеєр PythonЛекція. Виходимо за межі одного notebook та збираємо відтворювану програму з кількох модулів.
ЛР35`pathlib` і файли у браузеріЛабораторна. Variant directory містить текстовий файл із цілими значеннями. Треба прочитати його та записати summary поруч.
ЛР36Модулі й багатофайловий конвеєрЛабораторна. Working script треба розділити на reusable transformation, summary та orchestration modules.
ЛР37Фінальна інтеграція у Python і transfer check C++Лабораторна. Файл містить записи `name quantity price discount`. Потрібно побудувати перевірений data-processing pipeline і report.
МК3Модульний контроль 3Модульний контроль. Перевіряємо перенесення навичок у Python, роботу з даними, тести й самостійне проєктування.
Робоче середовище
Лабораторні notebook відкриваються у браузерному середовищі зі збереженням робіт.