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