программа — Алгоритмы и эффективные вычисления
Курс просто отличный. Две части, Александра Шеня и Александра Куликова, гармонично
дополняют друг друга (и даже один раз пересекаются, когда оба лектора рассказывают в два голоса одну
тему).
Теоретический курс суперски прокачал мозги, а в практическом смысле — дал знания, как оценить сложность
реализации придуманного алгоритма (время, память, количество логических элементов для схем), я начал НА
САМОМ ДЕЛЕ понимать, что такое эквивалентность классов NP и P, что означает разрешимость (или нет)
задачи, почему (и даже КАК) всегда можно написать квайн (программу, печатающую саму себя) и их «сонеты»
для цепочек разных языков программирования. И далеко не только это.
Практический курс разложил по полочкам мои прежние обрывочные сведения об алгоритмах. Теперь я могу
осознанно подходить к их выбору, исходя из имеющейся задачи, а не вслепую пробовать один за другим.
Андрей Белецкий
Вообще, узнал о программе случайно. Кто-то сбросил ссылку на экзамен в беседе в
телеграме.
Дмитрий Минченко
Теоретическая информатика — большое удовольствие от решения задач. Алгоритмы — четкая и ясная база с практическими задачами для закрепления.
Валерий Байбурин
Два направления программы, теоретическая информатика и алгоритмы, пересекаются,
дополняют друг друга и формируют целостную картину. Главные, на мой взгляд, достоинства программы —
структура и подача материала по курсу алгоритмов и задачи на код ревью.
Андрей Рыжиков
Онлайн-курс «Алгоритмы и структуры данных» — находите наиболее эффективные решения для повышения производительности кода
r_d
< школа наступившего будущего >
онлайн-курс 9 недель старт 09.09
Оперативно найти и выгрузить необходимую информацию, сжать данные без потерь или работать с высоконагруженными системами разработчику помогают алгоритмы, то есть уже готовые последовательности операций. Как применять алгоритмы и находить концептуально правильные решения ― узнайте на курсе.
Находите наиболее эффективные решения для повышения производительности кода Кому подходит курс
5 основных видов алгоритмов для решения задач по программированию работа с разными структурами данных и оптимизация программного кода на практике тестовое техническое интервью OR индивидуальная консультация по рабочим задачам от лектора для 3-х лучших студентов курса
Как развернуть строку без использования дополнительной памяти ― узнайте на курсе.
- работать с разными структурами данных
- реализовывать классические алгоритмы и выбирать алгоритм исходя из задачи
- изобретать новые решения и писать собственные алгоритмы
- находить данные в отсортированном массиве и решать задачи балансировки дерева
- строить хэш-таблицы, жадные алгоритмы и алгоритмы на строках
- оценивать программный код и находить способы его оптимизации
- применять алгоритмы для динамического программирования
- устроиться на работу в компанию, которая фокусируется на problem solving interview
Программа курса
Кому будет полезен курс
- Junior Web/Software Developers
Вы будете тратить ≈10 часов в неделю на самостоятельную практику и решать сложные задачи с использованием 5 основных видов алгоритмов. Научитесь одинаково эффективно работать с рекурсией и пузырьковой сортировкой и сможете выбирать наиболее эффективный алгоритм под свои задачи.
- В результате ― заложите фундамент алгоритмического мышления и сможете пройти problem solving interview на позицию Junior Web/Software Developer в большой международной корпорации.
- Web/Software Developers
За 9 недель вы решите большое количество задач разными методами и научитесь оптимизировать существующие алгоритмы под свои рабочие задачи. Вас ждет объемная и сложная самостоятельная практика, но в результате ― вы получите фундаментальные знания по программированию и закроете пробелы в знаниях.
- С навыками, приобретенными на курсе, вы сможете претендовать на должность Web/Software Developer в международной корпорации и будете изобретать эффективные решения тогда, когда другие специалисты тратят несколько часов, чтобы нагуглить готовый код.
Необходимые знания:
Python, Java, JavaScript, С++
базовые операции, работа с переменными и функциями
Математика
хорошо помните линейную алгебру и умеете применять математические формулы
Пока не обладаете нужными навыками? Обратите внимание на наш курс:
Лектор
Мария Скрягина Algorithm Development Engineer for Automated Driving в ZF TRW
16 онлайн-занятий 24 часа теории ⋃ практики 9 сентября — 2 ноября
ЗаписатьсяПрограмма курса
(16 занятий)
01 занятие
09. 09
19:00
Введение в алгоритмы и структуры данных
Разберитесь в том, что такое алгоритмы и структуры данных. Узнайте, в каких сферах используют алгоритмы и какие задачи они решают. На реальных примерах из жизни и технических примерах из практики лектора научитесь определять сложность алгоритмов.
02 занятие
14.09
19:00
Массивы как структура данных
Научитесь обрабатывать массивы и выполнять простые операции над ними [доступ, поиск, вставка, удаление]. Разберите несколько разных задач по работе с массивами. Научитесь определять временную сложность и сложность по памяти массивов.
03 занятие
16.09
19:00
Рекурсия
Узнайте, когда и зачем применять рекурсию. Разберите типичные рекурсивные задачи и научитесь реализовывать алгоритмы с применением рекурсии. Рассчитайте n-й элемент для последовательности Фибоначчи с помощью рекурсии.
04 занятие
21.09
19:00
Связный список
Научитесь проводить разные операции над связными списками. Разберите и решите типичные задачи на связные списки. Осуществите операции над связными списками и удалите дубликаты из связного списка.
05 занятие
23.09
19:00
Стеки и очереди
Узнайте, чем стек отличается от очереди. Разберите типичные задачи по стекам и очередям. Научитесь преобразовывать стеки в очереди и наоборот. Определите временную сложность и сложность по памяти стеков и очередей.
06 занятие
28.09
19:00
Алгоритмы по поиску и сортировке
Разберитесь в видах алгоритмов по поиску и сортировке. Узнайте, что такое бинарный поиск и научитесь реализовывать задачи по применению бинарного алгоритма.
07 занятие
30. 09
19:00
Алгоритмы по сортировке. Part 1
Ознакомьтесь с пузырьковой сортировкой, сортировкой вставками и сортировкой выбором. Примените эти алгоритмы на практике и решите по ним задачи. Научитесь сортировать массивы данных.
08 занятие
05.10
19:00
Алгоритмы по сортировке. Part 2
Реализуйте сортировку слиянием и быструю сортировку. Научитесь выбирать вид алгоритма под конкретную задачу и находить наиболее оптимальный способ решения.
09 занятие
07.10
19:00
Деревья
Узнайте, как структура данных «дерево» помогает хранить иерархическую информацию. Разберитесь в видах древовидных структур данных. Поймите, чем бинарное дерево отличается от дерева общего вида. Научитесь находить общего предка, определять диаметр дерева и связи между узлами.
10 занятие
12. 10
19:00
Бинарные деревья поиска
Детально изучите структуру бинарных деревьев поиска. Научитесь реализовывать поиск в ширину (BFS) и поиск в глубину (DFS). Напишите алгоритм нахождения k-го элемента в массиве. Узнайте, какие подходы можно применить для решения типичных задач по бинарным деревьям поиска.
11 занятие
14.10
19:00
Графы
Узнайте, какие бывают графы. Научитесь реализовывать матрицу смежности и основные алгоритмы обхода. Научитесь находить минимальное остовное дерево в неориентированном нагруженном графе. Реализуйте задачи по изученным методам разработки алгоритмов, например, определите количество одноцикловых компонентов на графике.
12 занятие
19.10
19:00
Хеш-функции
Узнайте, для каких задач применяют хеш-функции и разберите реальные кейсы. Решите задачу с применением хеш-функции.
13 занятие
21.10
19:00
Хеш-таблицы
Изучите структуру данных хеш-таблицы. Научитесь реализовывать схему для нахождения коллизий и предотвращения коллизий в хеш-таблицах и структурах данных. Проверьте, является ли один массив частью другого, и найдите первое повторение элемента массива.
14 занятие
26.10
19:00
Динамическое программирование [лекция]
Разберитесь в понятиях: динамический массив, двоичная куча и пирамидальная сортировка. Разберите на примерах одномерные и двумерные задачи динамического программирования.
15 занятие
28.10
19:00
Динамическое программирование [практика]
Узнайте, в чем суть динамического программирования и отличия этого метода разработки алгоритмов от остальных. Научитесь решать задачи методом динамического программирования по подотрезкам и динамического программирования по подмножествам. Разберитесь в алгоритмах кеширования. Научитесь оптимизировать алгоритмы.
16 занятие
02.11
19:00
Жадные алгоритмы
Узнайте, для чего применяют жадные алгоритмы. Научитесь оптимизировать алгоритмы по графам. Подберите лучший алгоритм для предложенной задачи, самостоятельно решите задачу, затем аргументируйте свой выбор и решение перед лектором.
Регистрация
Регистрируясь, вы соглашаетесь с условиями
договора-оферты и политикой конфиденциальности.
Преимущества robot_dreams:
Обучаем в режиме live
Преподаватель объясняет материал в прямом эфире, отвечает на все вопросы. Если пропустили занятие – сохраняется запись. Все обучение проходит в удобном личном кабинете.
Консультируем
Наши консультанты по карьерному росту помогут проанализировать ваши компетенции, очертят пути развития карьеры и порекомендуют дополнительные апгрейды для быстрого профессионального роста.
Помогаем с резюме
Подскажем, как составить CV, чтобы на него точно обратили внимание работодатели. Вы выгодно презентуете свои навыки и выделитесь на фоне конкурентов.
Где попрактиковаться в алгоритмах онлайн
Если вы программист, то наверняка знаете, что алгоритмы — очень важная часть программирования. Университетские курсы, онлайн-курсы или книги — это, среди прочего, способы изучения алгоритмов. Однако гораздо сложнее практиковать алгоритмы, чтобы действительно понять их в увлекательной игровой форме. В этом посте я расскажу о некоторых веб-приложениях, которые я использовал для отработки алгоритмов и улучшения своих навыков решения проблем.
Приложения очень похожи по принципу работы. Вы получаете описание проблемы (иногда несколько абзацев), а затем вы получаете либо редактор, в котором вы можете напрямую набирать свой код. Или вы получаете текстовое поле, чтобы либо ввести свой ответ, либо вставить код своего решения. Приложения позволяют выполнить некоторые базовые тесты перед отправкой решения. После того, как вы отправите свое решение, оно будет проверено на расширенном наборе тестов (пограничные случаи, большие числа, неправильные входные данные и т. д.). Затем они показывают вам результат того, насколько хорошо (или плохо) вы справились. Поскольку это учебные сайты, вы обычно можете вернуться и отредактировать свой код даже после отправки.
Математические задачи становятся все сложнее и сложнее
Красота проекта Эйлера в его простоте. Вы получаете задачу, а под ней есть текстовое поле, в котором вы можете написать свой ответ — в основном просто число. Первые несколько задач очень легкие, но они довольно быстро начинают усложняться. Я попытался проверить свою учетную запись и был немного разочарован, обнаружив, что я добрался только до задачи номер 12. Однако, если вы начинающий программист, даже первые несколько задач будут отличным упражнением.
Геймификация, различные уровни сложности, ежедневные задания, сообщество
Кажется, я обнаружил это веб-приложение, когда оно только начиналось. Первоначальная концепция заключалась в том, что вы будете сопоставлять вас со случайным игроком со всего мира, и у вас будет кодовый бой . Это означает, что вам обоим нужно будет решить 3, в основном, простых задачи, и вы будете получать баллы в зависимости от того, насколько быстро вы решите эти задачи. Побеждает самый быстрый. На самом деле это было довольно увлекательно, потому что вы могли видеть, как быстро прогрессирует другой игрок, и вы чувствовали необходимость быть быстрее.
Однако через некоторое время эта концепция была изменена, потому что, вероятно, это был не лучший способ заработать деньги (это только мое предположение). Они были переименованы в CodeSignal , и теперь основной задачей приложения является набор персонала (как и в большинстве этих приложений). Они пытаются помочь компаниям найти способных программистов.
Даже тогда, когда битва за код была главной задачей сайта, существовали также ежедневные и еженедельные соревнования по программированию. Задачи были чуть более сложными задачами, на решение которых уходило от 5 минут до часа. Вы могли (и все еще можете) попробовать некоторые задачи, которые, как говорили, появляются в интервью для больших технологий. Есть интересный аркадный режим, в котором вы просто продвигаетесь по задачам программирования. Вы получаете очки и достижения за решение задач. Эти задачи не слишком сложны, что позволило мне продержаться дольше, так как у меня не было демотивации. Вы получаете баллы за решение задачи, а также значки за различные достижения. Это хоть немного напоминает игру.
Мне было очень грустно узнать, что исходная функция борьбы с кодом была полностью удалена из приложения. Или, по крайней мере, я больше не мог его найти.
Не стесняйтесь проверить мой профиль.
Профессиональные, более сложные задачи, требуют некоторых знаний алгоритмов, используются на собеседованиях
Это больше профессиональная платформа, чем CodeSignal . Я думаю, что это то, чем CodeSignal в конечном итоге хотел бы стать. У него есть довольно хорошее программное обеспечение для оценки, которое пытается определить сложность ваших алгоритмов и также оценивает вас на основе этого. Задачи на этом сайте требуют более глубоких знаний, чем задачи на КодСигнал. Они требуют, чтобы вы действительно знали некоторые алгоритмы или, по крайней мере, возможные способы решения проблемы (динамическое программирование, жадные алгоритмы и т. д.).
Codility используется некоторыми компаниями при приеме на работу. Например, Toptal использует эту платформу для проведения собеседований с кандидатами. Это также хорошая причина, чтобы попытаться решить некоторые проблемы, предоставляемые этим приложением.
Еще одна замечательная особенность Codility заключается в том, что он предоставляет некоторый материал для изучения (или, по крайней мере, подсказки), как решать задачи в данном разделе. Это здорово, потому что позволяет не только практиковать алгоритмы, но и изучать их. Однако одних этих материалов недостаточно для решения проблем. Как я уже сказал, вам нужны некоторые алгоритмические знания, чтобы решить большинство задач.
Соревновательное программирование, очень сложные задачи, сообщества
Это еще несколько сайтов, о которых я знаю, но у меня не было возможности их опробовать. Я решил некоторые проблемы в CodeForces , приложении, ориентированном на конкурентное программирование. Они в значительной степени работают так же, как и предыдущие приложения, о которых я упоминал, а также в большинстве случаев создают очень похожие проблемы.
Что мне нравится в этих приложениях, так это то, что они обеспечивают быструю обратную связь по вашему решению. Вы можете продвигаться вперед очень быстро, что намного лучше, чем ждать, пока профессор или кто-то еще оценит ваше решение. Это означает, что вы быстрее отрабатываете алгоритмы. У вас также есть возможность исправить решение, если вы предоставили неправильное решение. Это здорово, потому что в большинстве случаев у вас нет возможности сделать это на экзаменах или что-то в этом роде. Они также красиво сделаны, что только добавляет к общему опыту.
Если вы ищете другие способы стать лучше как разработчик, посмотрите этот выпуск подкаста (на словацком языке).
Онлайн-алгоритмы с несколькими предсказаниями
Кирти Ананд, Ронг Ге, Амит Кумар, Дебмалья ПаниграхиМатериалы 39-й Международной конференции по машинному обучению , PMLR 162:582-598, 2022.
Аннотация
В этой статье рассматриваются онлайн-алгоритмы, дополненные числом , кратным .предсказания с помощью машинного обучения. Мы даем общую алгоритмическую структуру для онлайн-покрытия задач с несколькими прогнозами, которая дает онлайн-решение, конкурентоспособное по производительности лучших решений, полученных из прогнозов. Наш алгоритм включает использование прогнозов в классическом анализе онлайн-алгоритмов на основе потенциала. Мы применяем нашу алгоритмическую структуру для решения классических задач, таких как покрытие онлайн-множества, (взвешенное) кэширование и размещение онлайн-объектов в условиях множественных прогнозов.
Процитировать эту статью
БибТекс
@InProceedings{pmlr-v162-anand22a,
title = {Онлайн-алгоритмы с множественными предсказаниями},
автор = {Ананд, Кирти и Ге, Ронг и Кумар, Амит и Паниграхи, Дебмалья},
booktitle = {Материалы 39-й Международной конференции по машинному обучению},
страницы = {582--598},
год = {2022},
редактор = {Чаудхури, Камалика и Джегелька, Стефани и Сонг, Ле и Сепешвари, Чаба и Ню, Ганг и Сабато, Сиван},
громкость = {162},
серия = {Материалы исследования машинного обучения},
месяц = {17--23 июля},
издатель = {PMLR},
pdf = {https://proceedings.mlr.press/v162/anand22a/anand22a.pdf},
URL = {https://proceedings.mlr.press/v162/anand22a.html},
abstract = {В этой статье рассматриваются онлайн-алгоритмы, дополненные несколько предсказаний, полученных с помощью машинного обучения.
Мы даем общую алгоритмическую основу для онлайн-покрытия задач с несколькими прогнозами, которая дает онлайн-решение, конкурентоспособное по производительности лучших решений, полученных из прогнозов. Наш алгоритм включает использование прогнозов в классическом анализе онлайн-алгоритмов на основе потенциала. Мы применяем нашу алгоритмическую структуру для решения классических задач, таких как покрытие онлайн-множества, (взвешенное) кэширование и местоположение онлайн-объекта в условиях множественных прогнозов.}
}
Сноска
%0 Документ конференции
Онлайн-алгоритмы %T с несколькими прогнозами
%Кирти Ананд
%А Ронг Гэ
%A Амит Кумар
%A Дебмалья Паниграхи
%B Материалы 39-й Международной конференции по машинному обучению
%C Материалы исследования машинного обучения
%D 2022
%E Камалика Чаудхури
%E Стефани Егелька
%E Ле Сонг
%E Чаба Сепешвари
%E Ган Ню
%E Сиван Сабато
%F pmler-v162-anand22a
%I PMLR
%Р 582--598
%U https://proceedings.