Научитесь выбирать и создавать алгоритмы для поиска нестандартных решений, оптимизации программного кода и масштабирования IT-систем.
Артем Верещака
Platform Software Engineer в Speechify,
former Tech Lead в Bolt
9 блоков \ 40 часов
Комплексный онлайн-курс о том, как находить нестандартные решения в сложных рабочих задачах и оптимизировать строки программного кода, опираясь на знания по алгоритмике.
чтобы разбираться в архитектурных подходах, придерживаться стиля, писать чистый код и минимизировать системные баги вместо того, чтобы копипастить «костыли»
чтобы получить практический опыт решения задач по алгоритмике, научиться адаптировать классические методы под свои задачи и изобретать на их основе собственные решения
чтобы разобраться в структурах данных, оптимизировать и совершенствовать работающие алгоритмы и писать совершенные коды для машинного обучения
Если вы хотите не просто выполнять рабочие задачи, а искать самые эффективные решения в пользу продукта, алгоритмы и структуры данных — это must-have. Именно они предоставляют разработчикам и инженерам инструменты для эффективного хранения, организации и обработки данных, а также оптимизации выполнения задач.
В течение курса вы получите все необходимые навыки для написания и использования алгоритмов: начнем с массивов данных, алгоритмов поиска и сортировки, изучим различные структуры данных. Затем разберем графы и хэш-таблицы. После этого овладеем динамическим программированием. В конце подведем итоги и подготовимся к техническим интервью.
Лектор поделится личным опытом применения алгоритмов, ознакомит вас с классическими методами решения задач алгоритмики и научит структурировать данные для максимально эффективного использования.
Вы научитесь решать рабочие задания с помощью классических методов алгоритмики, овладеете алгоритмами сортировки, бинарными и сбалансированными деревьями, графами, хэш-функциями и хэш-таблицами, одномерными и двумерными задачами динамического программирования.
Вы будете разбирать алгоритмы на языках Python, Java, JavaScript. На одном из этих языков на ваш выбор будете писать домашние задания, а лектор будет давать фидбек относительно вашего кода. После этого вы будете получать полный разбор задач и сможете отслеживать свои ошибки.
Вы закроете пробелы в знаниях и подготовитесь к problem solving interview в большой IT-компании. Для трех самых успешных студентов лектор проведет тестовое техническое интервью или личную консультацию.
Результаты: узнаете, что такое структуры данных и алгоритмы. Поймете, что такое сложность алгоритмов и как ее считать.
Результаты: узнаете, что такое массивы и как с ними работать. Научитесь реализовывать типовые задачи на массивах, применять операции и действия над массивами, определять временную и пространственную сложность при работе с массивами. Сможете решать алгоритмические задачи разной сложности.
Результаты: узнаете, что такое связанные списки, стеки, очереди и как с ними работать. Научитесь осуществлять операции над ними, решать типовые задачи со связанными списками, по стекам и очередям, а также алгоритмические задачи разной сложности.
Результаты: узнаете об основных алгоритмах поиска и сортировки и их реализации. Ознакомитесь с библиотеками сортировки. Научитесь реализовать задачи по применению бинарного алгоритма и сортировать массивы данных. Сможете определить, какой алгоритм лучше подходит для решения конкретной задачи.
Результаты: узнаете, какие бывают деревья, и научитесь находить общего предка, диаметр дерева, глубину узла и сумму ветвей. Поработаете с деревом поиска. Научитесь реализовывать обход дерева и поиск по нему. Узнаете о сбалансированных деревьях. Научитесь работать со специальными деревьями и решать классические задачи с использованием деревьев.
Результаты: узнаете, какие бывают графы, как их задавать посредством матрицы или списка смежности. Научитесь реализовывать алгоритмы обхода и поиска, нахождения кратчайшего пути. Сможете решать типовые задачи на графы.
Результаты: узнаете о хэш-функциях и их назначении, хэш-таблицах и их свойствах. Научитесь применять хэш-таблицы и хэш-функции для решения задач.
Результаты: узнаете, что такое динамическое программирование, научитесь определять простые задачи на динамику и находить решения для них. Сможете применять динамическое программирование, оптимизировать time and space complexity, определять и выполнять задачи на динамику с разными подходами. Узнаете, что такое жадные алгоритмы, и научитесь решать проблемы с их помощью.
Результаты: узнаете, из каких этапов состоит кодинг интервью и как к нему подготовиться. Научитесь определить классические подходы и задания на собеседовании, реализовывать задачи во время интервью с ограниченными ресурсами и использовать информацию из описания для быстрого поиска решения. Можете декомпозировать задачу.