Структура заданий
Теория без практики бесполезна, и далее приведены задания. Каждое из них опирается на свои главы, поэтому выполнять их лучше по мере чтения, а не все разом в конце. Таблица ниже показывает, какие главы необходимы для какого задания.
Почти у каждого задания есть репозиторий, в котором размещена его формулировка и в который удобно сдавать решение форком, как это устроено в главе про Git. Заготовка есть не везде. В задании на ревью размещён код, который предстоит разбирать; в «Деплое стартапа» код разнесён по веткам front_code и my_backend, и свести их вместе означает выполнить первую часть работы. Остальным заданиям заготовка не требуется, поскольку в них настраивается собственное окружение, обрабатываются собственные данные или решаются задачи на внешнем сайте.
Раздел «Требования к сдаче» у каждого задания представляет собой перечень того, без чего работа не принимается.
| Задание | Опирается на главы | Репозиторий |
|---|---|---|
| Ревью чужого кода | Требования к коду, Жизненный цикл ПО | phys-dev/review-code-task |
| Генерация текста | Технические основы, Коллекции | phys-dev/markov-chain-task |
| Установка Arch Linux вручную с RAID1 и UEFI | Процесс загрузки, Файловые системы, Установка Arch Linux | phys-dev/booting-linux-task |
| Окружение и утилиты | Инструменты Linux, Внутреннее устройство Linux | phys-dev/linux-tools-task |
| Долгоиграющие процессы | Внутреннее устройство Linux | phys-dev/linux-structure-task |
| Задачи на Python | Введение в алгоритмы, Сложность операций с коллекциями | phys-dev/python-algo-task |
| Деплой стартапа | От скрипта к приложению, Docker, Сети и веб-технологии, Базы данных | phys-dev/kitty-startup-task |
| Итоговый проект | вся книга | свой репозиторий |
Адрес репозитория складывается из https://github.com/ и имени из таблицы.
Все задания, кроме итогового проекта, проверяются по формальным критериям, и решение у них в общих чертах предопределено. В итоговом проекте задача формулируется студентом самостоятельно, и основная сложность в нём не программистская, а постановочная: понять, что требуется вычислить и как проверить, что вычисление выполнено правильно.