Чему вы научитесь
Алгоритмы и оценка сложности
Почему один код справляется за секунду, а другой заставляет ждать? На курсе вы научитесь отвечать на этот вопрос по коду, а не гадать по секундомеру.
Все идеи разбираем на понятных аналогиях и сразу проверяем на Python. Например, сравниваем подсчёт чисел циклом с короткой формулой, поиск по списку — с поиском слова в словаре, а очередь — с обычной очередью в магазине.
Что вы сможете делать
- понимать
O(1),O(n),O(log n),O(n²)иO(n log n); - оценивать отдельно время работы и дополнительную память;
- выбирать между списком, словарём, множеством, стеком, очередью и кучей;
- писать поиск, сортировки, обходы графов и динамическое программирование;
- замечать медленный участок кода и заменять его более быстрым решением;
- объяснять оценку сложности через операции алгоритма и подтверждать вывод экспериментом.
Как устроена практика
Каждый урок похож на небольшую лабораторию:
- знакомая жизненная аналогия объясняет новую идею;
- короткий пример на Python показывает её в действии;
- трассировка раскрывает работу кода шаг за шагом;
- четыре задания проверяют код, вывод, ошибку, время и память;
- последовательные подсказки помогают дойти до ответа самостоятельно;
- полный разбор открывается после попытки.
Здесь мало пользы от простого заучивания. Вы будете запускать код, менять входные данные, считать операции и проверять свои предположения тестами.
Кому подойдёт курс
- школьникам и студентам, которые уже знают основы Python;
- начинающим разработчикам перед собеседованиями;
- тем, кто встречал Big O, но так и не понял, откуда берутся оценки;
- программистам, которым нужна системная практика по алгоритмам.
Сложная математика не требуется. Достаточно понимать переменные, условия, циклы, функции, списки и словари.
Темы курса
- Измеряем рост работы алгоритма.
- Осваиваем линейный и бинарный поиск.
- Сравниваем простые и быстрые сортировки.
- Выбираем подходящие структуры данных.
- Изучаем рекурсию, кучу и очередь с приоритетом.
- Заменяем вложенные циклы двумя указателями и скользящим окном.
- Обходим деревья и графы.
- Находим кратчайшие пути.
- Разбираем жадные алгоритмы и динамическое программирование.
Что входит в практику
- 20 лабораторных работ;
- 80 проверяемых заданий;
- 40 запускаемых примеров на Python;
- стартовый проект без готового решения;
- checkpoint после каждого урока;
- тесты, которые помогают найти ошибку;
- финальная оптимизация алгоритмической лаборатории.
Что понадобится
- Python 3.11 или новее;
- редактор кода;
- умение открыть терминал в папке проекта;
- желание разбираться, почему код работает именно так.
Итоговый результат
К концу курса вы не просто запомните таблицу сложностей. Вы соберёте работающий проект на Python и сможете по шагам объяснить, почему один алгоритм подходит задаче лучше другого.