Developer PRO: Python‑разработчик + Алгоритмы + Bash/Git [Stepik] [Алексей Малышкин]
В программу входят:
Комплексная программа из трёх курсов: Алгоритмы и структуры данных, Python для профессионалов, Bash + Git. Всё, что нужно, чтобы стать Python‑разработчиком middle‑уровня
Чему вы научитесь:
Начальные требования:
В программу входят:
- 3 курса
- 200 уроков
- 292 теста
- 137 интерактивных задач
Комплексная программа из трёх курсов: Алгоритмы и структуры данных, Python для профессионалов, Bash + Git. Всё, что нужно, чтобы стать Python‑разработчиком middle‑уровня
Чему вы научитесь:
- Анализировать требования задачи и выбирать оптимальные структуры данных под заданные ограничения
- Оценивать временную и пространственную сложность алгоритмов, применяя нотации O, Θ, Ω
- Проектировать и реализовывать алгоритмы поиска, сортировки, работы с деревьями, кучами и хэш‑таблицами
- Доказывать корректность алгоритмов и сравнивать их эффективность в граничных сценариях
- Писать идиоматичный Python 3.12+, используя аннотации типов, match/case, позиционные‑только параметры и оператор «морж»
- Создавать пользовательские итераторы, генераторы, асинхронные корутины и контекст‑менеджеры для управления ресурсами
- Модифицировать поведение кода с помощью декораторов, дескрипторов и метаклассов
- Разрабатывать асинхронные приложения с asyncio для конкурентного выполнения без блокировок
- Профилировать время и память (cProfile, timeit, tracemalloc) и оптимизировать критические участки Python‑кода
- Автоматизировать задачи Bash‑скриптами, используя переменные, функции, массивы и регулярные выражения
- Обрабатывать потоковые данные командами grep, sed, awk и строить сложные пайплайны через перенаправление ввода‑вывода
- Управлять процессами Linux (jobs, ps, kill, nohup) и планировать фоновые задачи с cron и at
- Настраивать сетевые проверки и загрузку данных (ping, curl, wget) из Bash‑скриптов
- Применять политики доступа к файлам и управлять пользователями в Unix‑системах
- Использовать Git: commit, branch, merge, rebase, cherry‑pick, stash, tag и управление подмодулями
- Разрешать конфликты, выполнять интерактивный rebase и гибко реорганизовывать историю проекта
- Настраивать pull/merge‑requests, проводить код‑ревью и внедрять Git hooks для автоматизации
- Интегрировать Git‑репозитории с CI/CD‑пайплайнами (GitHub Actions, GitLab CI) и таск‑трекерами
- Выбирать и внедрять стратегии ветвления (Git Flow, Trunk Based, GitHub Flow) под разные процессы разработки
- Разрабатывать и поддерживать комплексные моно‑ и мульти‑репозитории, включая работу с LFS и оптимизацию размера
- : O‑нотации, массивы, списки, стеки, очереди, сортировки, кучи, деревья, хэш‑таблицы, Детерминированный Quick Sort, дерево отрезков. В доработке находятся модули по графам, теории чисел, геометрии и потокам.
- : Итераторы, генераторы, декораторы, контекст‑менеджеры, asyncio, метаклассы, оптимизация.
- : Shell‑команды, скрипты, regex, cron, сетевые утилиты, Git‑workflow, CI/CD, Git Hooks, Репозиторий с автоматическим деплоем через GitHub Actions
- Умение оценивать сложность и эффективность решений, быстро находить «узкие места».
- Навыки написания производственного Python‑кода: от генераторов до асинхронных сервисов.
- Полный набор CLI‑приёмов Bash для ежедневной автоматизации.
- Профессиональный Git‑workflow: ветвление, rebase, CI/CD‑пайплайны, Git Hooks.
- Портфолио из 6+ проектов (стек, очередь, детерминированный Quick Sort, дерево отрезков, bash‑фильтры, комплексный репозиторий с CI).
- Готовность уверенно проходить алгоритмические и системные части интервью.
- Студенты технических специальностей (1 – 4 курсы), которым не хватает цельного понимания алгоритмов и production‑Python для учебных и конкурсных проектов.
- Самоучки‑программисты с опытом «пет‑проекта» на Python, желающие перейти на уровень middle и начать брать коммерческие задачи.
- QA‑автоматизаторы, аналитики данных и DevOps‑инженеры, которым нужен надёжный Python‑код, Bash‑скрипты и грамотный Git‑workflow для CI/CD.
- Разработчики других языков (C++, Java, JavaScript), планирующие переключиться на Python‑стек и быстро закрыть пробелы в алгоритмах.
- Кандидаты на собеседования в продуктовые и аутсорс‑компании, где проверяют алгоритмическое мышление, умение писать чистый код и работать с Git.
Алгоритмы и структуры данных: полный курс
Введение в алгоритмы и структуры данных
1. Итоги курса
Python для профессионалов
Введение
1. Приветствие
Итераторы и генераторы
Bash Linux + Git
Введение в курс
Введение в алгоритмы и структуры данных
- Краткий обзор структуры курса
- Что такое алгоритмы?
- Асимптотическая сложность и нотация большого O
- Пространственная сложность (потребление памяти)
- O, o, Θ, Ω(осторожно, матан)
- Таблица распространенных сложностей
- Примеры оценки сложности алгоритмов
- Задачи
- Массивы
- Списки: односвязанные, двусвязанные
- Применение списков
- Очередь и стэк: принципы FIFO и LIFO
- Реализация и задачи
- Задачи
- Проект 1: Стэк
- Проект 2: Очередь
- Линейный и бинарный поиски
- Модификации и тесты на алгоритмы поиска
- Сортировка пузырьком
- Сортировка вставками
- Сортировка слиянием (merge sort)
- Быстрая сортировка (Quick Sort)
- Quick Select
- Детерменированный Quick Sort
- Задачи
- Проект 3: детерминированный Quick Sort
- Двоичная куча: свойства, использование в алгоритмах.
- Построение кучи
- Встроенные кучи в C++ и Python
- Задачи
- Что такое ДО?
- Построение дерева
- Обновление значений
- Обработка запросов
- Сжатие координат
- Неявное дерево отрезков
- Задачи
- Проект 4: Дерево отрезков
- Что такое дерево?
- Что такое бинарное дерево поиска (BST)
- Операции в бинарном дереве поиска
- Обходы дерева
- Проверка дерева на соответствие BST
- Минимум и максимум в BST
- Уравновешенные BST
- Использование BST в реальных задачах
- Задачи
- Типы сбалансированных деревьев
- AVL-дерево
- Splay-дерево
- Декартово дерево
- Красно-черное дерево
- Задачи
- Проект 5: Set
- Основная идея и примеры
- Коллизии: как их обрабатывать
- Частотный анализ
- Хранение уникальных элементов
- Простая хэш-таблица на основе массива
- Обработка коллизий метод цепочек
- Задачи
- Введение в графы
- Обходы графа (DFS и BFS)
- Компоненты связанности
- Кратчайшие пути
- Поиск минимального остовного дерева
- Топологическая сортировка
- Алгоритм Флойда-Уоршелла
- Алгоритм А и его примение
- Введение в геометрию
- Определение выпуклого многоугольника
- Пересечение отрезков
- Выпуклая оболочка (Convex Hull)
- Алгоритм триангуляции Делоне
- Геометрические алгоритмы в графике
- Основы теории чисел
- Расширенный алгоритм Евклида
- Быстрое возведение в степень
- Решето Эратосфена и тесты простоты
- Китайская теорема об остатках
- RSA и основы криптографии
- Базовые принципы ДП
- Классические задачи ДП
- ДП с восстановлением ответа
- Задача о рюкзаке
- ДП по деревьям
- ДП по маскам
- Комбинированные техники ДП
- Основы многопоточного программирования
- MapReduce и обработка больших данных
- Алгоритмы для многопоточных систем
- Lock-free структуры данных
- Параллельные алгоритмы сортировки
1. Итоги курса
Python для профессионалов
Введение
1. Приветствие
Итераторы и генераторы
- Итерации в Python: итерируемые объекты
- Протокол итератора: функции iter() и next(), метод next
- Создание пользовательских итераторов
- Генераторы: функции-генераторы и ключевое слово yield
- Генераторные выражения
- Продвинутые возможности генераторов
- Функции высшего порядка и области видимости
- Зачем нужны декораторы: изменение поведения функций
- Синтаксический сахар для декораторов: оператор @
- Декораторы с параметрами
- Декорирование методов и классов
- Оператор with и протокол менеджеров контекста
- Использование встроенных менеджеров контекста (пример: файл)
- Создание своего менеджера контекста
- Библиотека contextlib: упрощение создания менеджеров контекста
- Конкурентность vs параллелизм: зачем нужна асинхронность
- Основы async/await: определение и вызов корутин
- Библиотека asyncio и цикл событий
- Пример: асинхронная обработка веб-запросов
- Асинхронные генераторы и менеджеры контекста
- Интроспекция и динамические возможности Python
- Дескрипторы: управление доступом к атрибутам
- Метаклассы: классы, создающие классы
- Примеры использования метаклассов
- Динамическое создание и модификация классов
- Модуль functools: функции для функций
- Модуль itertools
- Модуль collections: расширенные контейнеры
- Модуль concurrent. futures: простая параллельность
- Другие полезные модули стандартной библиотеки
- CPython: интерпретатор и байткод
- GIL: Глобальная блокировка интерпретатора
- Сборка мусора в Python: подсчет ссылок и циклический GC
- Профилирование времени выполнения: cProfile и анализ результатов
- Измерение времени отдельных операций: модуль timeit
- Профилирование памяти: memory_profiler, tracemalloc
- Приёмы оптимизации Python-кода
- Оператор присваивания в выражениях (PEP 572, Python 3.8)
- Позиционные только параметры (PEP 570, Python 3.8)
- Объединение словарей и улучшения Python 3. 9
- Структурное сопоставление (match/case, PEP 634, Python 3. 10)
- Новое в Python 3. 11 и далее: оптимизация и другие PEP
- Формочка для обратной связи
- Заключение
Bash Linux + Git
Введение в курс
- Приветствие
- Работа с bash в Windows
- Что такое командная строка и зачем она нужна?
- Основные команды
- Перенаправление ввода\вывода
- Задачи
- Чтение, создание и редактирование файлов
- Потоковая обработка (grep, sed, awk)
- Регулярные выражения
- Задачи
- Написание первых скриптов
- Переменные и аргументы
- Условные конструкции (if, case)
- Циклы (for, while, until)
- Задачи
- Функции
- Массивы
- Ассоциативные массивы
- Задачи
- Фильтрация валентинок
- Фильтрация валентинок 2
- Фильтрация валентинок 3
- Фильтрация валентинок 4
- Управление процессами (jobs, ps, kill, nohup)
- Автоматизация задач (cron, at)
- Задачи
- Основы сетевых команд (ping, netstat, curl, wget)
- Разрешения файлов и управление пользователями
- Практические кейсы
- Фильтрация валентинок 5
- Фильтрация валентинок 6
- Фильтрация валентинок 7
- Фильтрация валентинок 8
- Итоги курса
- Что такое системы контроля версий (VCS) и зачем использовать Git
- Установка и настройка Git
- Основные команды Git: быстрый обзор
- Задачи
- Ветвление и слияние
- Управление историей коммитов
- Интерактивный ребейз и рефракторинг истории
- Задачи
- Основы работы с удалёнными репозиториями и GitHub
- Совместная работа и Pull Requests
- Автоматизация с GitHub Actions
- Задачи
- Работа с Git в Visual Studio Code (VSCode)
- Git в PyCharm и других IDE JetBrains
- Работа с Git в Eclipse и Android Studio
- Задачи
- Git Hooks и автоматизация процессов
- Работа с тегами и Git stash
- Подмодули и работа с большими файлами
- Задачи
- Стратегии ветвления в Git
- Интеграция Git с CI/CD
- Интеграция Git с таск-трекерами и другими сервисами
- Задачи
- Создание и работа с комплексным репозиторием
- Оптимизация работы с Git
- Завершающий урок — Советы и лучшие практики работы с Git
- Базовое владение Python: переменные, циклы, функции, работа со строками и списками, исключения, ООП.
- Понимание школьной математики и логики (арифметика, основы комбинаторики).
- Компьютер с доступом в интернет и возможностью установить:
- Python ≥ 3.10;
- Git ≥ 2.30;
- Терминал / PowerShell / Bash‑эмулятор (установку для Windows разбираем в курсе).
- Готовность уделять 3‑5 часов в неделю на просмотр уроков и практику. Всё остальное — объясним с нуля.
https://stepik.org/course/237798/promo