База для будущих SRE / DevOps / Ops, которые хотят вырасти из bash-скриптов в инженеров-программистов. Репозиторий объединяет три направления: структуры данных и алгоритмы «с нуля» (Python и Go), теоретический курс «Основы алгоритмизации и программирования» и полноценный трек Go.
📖 Документация опубликована на GitHub Pages: https://jtprogru.github.io/dsa-for-ops/
- DSA — лабораторные на Python (
lab01–lab05) и их зеркальные реализации на Go, плюс прикладные расширения под эксплуатацию (lab00,lab06–lab11): графы, куча, LRU-кэш, rate limiting, разбор логов, consistent hashing. - Основы программирования — теоретический курс (темы 01–09): алгоритмизация, Python, процедуры и файлы, ООП, IDE, этапы разработки, иерархия классов.
- Эксплуатация — темы 10–12: стандартные модули (HTTP, regex, SQLite, конкурентность), разработка приложений (логирование, Django, standalone), качество кода и тестирование.
- Go — темы 13–14 и самостоятельные модули в
src/golang/: основы Go и продвинутый трек (конкурентность,context,net/http, бенчмарки и pprof). - Собеседования — задачи с собеседований (LeetCode/CodeWars) на Python с тестами и Go-версиями, сгруппированные по структурам данных из лаб. Подробнее — в разделе «Задачи с собеседований».
- Python >= 3.14 и uv для управления зависимостями.
- Go >= 1.25 для Go-трека и Go-версий лабораторных.
make syncmake py-run # список доступных Python-лабораторных
make py-run lab01 # запустить конкретную лабораторную
make py-run lab06make py-newlab # создать следующую по номеру лабу (labNN.py + тест + docs/labNN.md)
make py-newlab lab15 # либо задать номер явноmake lint # ruff check + ruff format --check (как в CI)
make fmt # ruff check --fix + ruff formatmake test # pytest + coverage
make go-test # go test по всем модулям в src/golang
make go-build # go build по всем модулям
make go-vet # go vet по всем модулям
make test-interview # только interview-тесты (Python + Go)Сайт собирается из каталога docs/ через MkDocs с темой Material (mermaid-диаграммы, формулы MathJax, даты ревизий) и автоматически публикуется на GitHub Pages при пуше в main (workflow .github/workflows/docs.yml).
make docs # локальный сервер на http://127.0.0.1:8000
make docs-build # собрать статический сайт в site/ (mkdocs build --strict)make help # список всех команд
make clean # удалить кэш и временные файлыsrc/python/
labs/ # DSA-лабы на Python
common/ # переиспользуемые утилиты (array_length, generate_array, custom_range)
lab01.py … lab05.py # академические лабы (массив/стек, список/очередь/дерево, сортировки, поиск, hash map)
lab00.py # Python для эксплуатации (файлы, argparse, исключения, генераторы)
lab06.py … lab11.py # прикладные: графы, куча, LRU, rate limiting, разбор логов, consistent hashing
tasks/loops/ # разминочные упражнения на циклы
tasks/interview/ # задачи с собеседований, сгруппированы по структурам из лаб
src/golang/
basics/ # Go — основы (тема 13)
advanced/ # Go — продвинутый трек (тема 14)
dsa/ # Go-версии lab01–lab05 + table-driven тесты
tests/ # pytest к каждой лабораторной
docs/ # сайт MkDocs (DSA, foundations, ops, go, interview, practice, tickets)
mkdocs.yml # конфигурация сайта документации
Лабораторные сделаны «с нуля», без сторонних библиотек, чтобы было видно внутреннее устройство структур:
- Академические (
lab01–lab05) — массив и стек, связный список / очередь / дерево, сортировки, поиск, hash map. - Прикладные под эксплуатацию (
lab00,lab06–lab11) — Python для эксплуатации, графы и топосортировка, куча и top-K, LRU-кэш, rate limiting, разбор логов, consistent hashing и bloom filter.
Подробный разбор каждой структуры (что это, зачем, сложность операций, блок «где это в проде») — в конспекте: https://jtprogru.github.io/dsa-for-ops/notes/. Go-версии lab01–lab05 лежат в src/golang/dsa/ с table-driven тестами; конспекты в docs/ приводят примеры на Python и Go во вкладках.
Если в лабах структуры данных реализуются «с нуля», то здесь они применяются — на готовых dict, set, list — для решения классических задач с собеседований (LeetCode/CodeWars). Задачи сгруппированы по структуре, которую закрепляют: хеш-таблица, массив/стек/два указателя, поиск, биты и арифметика.
- Решения на Python:
src/python/tasks/interview/, тесты —tests/tasks/interview/. - Go-версии: модуль
src/golang/tasks/(пакетinterview, table-driven тесты рядом с кодом). - Разбор задач с идеями и оценками сложности: https://jtprogru.github.io/dsa-for-ops/interview/.
make test-interview # прогнать только interview-тесты (Python + Go)Направление развития курса — для кого он, какой стиль выдерживаем и что ещё хочется углубить — в docs/roadmap.md.