EMBER_CLI_FASTBOOT_BODY

Алгоритмы: теория и практика. Структуры данных

Play
Current Time 0:00
/
Duration Time 0:00
Remaining Time -0:00
Stream TypeLIVE
Loaded: 0%
Progress: 0%
00:00
Fullscreen
00:00
Mute
Playback Rate
  • 2x
  • 1.75x
  • 1.5x
  • 1.25x
  • 1x
  • 0.75x
  • 0.5x
1
Chapters
  • Chapters
Play
To watch this video please visit https://stepik.org/lesson//step/

About the course

В курсе будут рассмотрены структуры данных, наиболее часто использующиеся на практике: массивы, списки, очереди, стеки, динамические массивы, очереди с приоритетами, системы непересекающихся множеств, хеш-таблицы, сбалансированные деревья. Вы узнаете, как такие структуры данных реализованы в разных языках программирования, и, конечно же, потренируетесь самостоятельно их реализовывать, применять и расширять.

Основная цель курса — узнать, как устроены основные структуры данных (чтобы не пользоваться их готовыми реализациями как чёрным ящиком, а точно знать, чего от реализации ожидать), и научиться выбирать подходящую структуру данных при решении заданной вычислительной задачи.

Данный курс является продолжением курса «Алгоритмы: теория и практика. Методы». Если вы не проходили этот курс, мы настоятельно рекомендуем вам пройти хотя бы его первую неделю.

Instructors

  1. User picture
    Александр Куликов
    ПОМИ РАН, Computer Science Center

    Доктор физико-математических наук. Старший научный сотрудник Математического института Стеклова в Санкт-Петербурге (ПОМИ РАН), координатор и преподаватель Computer Science центра и Computer Science клуба при ПОМИ РАН. Научные интересы: алгоритмы для NP-трудных задач, схемная сложность.

    Домашняя страница: http://logic.pdmi.ras.ru/~kulikov/

Reviews

Иван Л August 12, 2017 link
Rated:  5
Отличный курс! Как и предыдущая часть. Особенно для тех, кто интересуется программированием, но не программист и кого уже не увлекает решение простейших задач из курсов "язык программирования за 15 дней" и "наивные" алгоритмы. До этого курса от таких структурах как стек, очередь, куча и двоичное дерево имел только самое общее представление, как ими пользоваться не знал (даже как дерево обходить! и как оно вообще задается!). Решил все задачи. Особенно отличились последние две из четвертого модуля. Предпоследняя прямо "похоронная" :-). У меня ушло на каждую по 3 - 5 дней по 250-300 строк кода, для меня это очень большое количество. Никогда еще таких "огромных" :-) программ не писал. Потраченного времени (две недели ежедневно по 7-9 часов) нисколько не жалко. Самым ценным считаю то, что приносило больше всего боли - это сообщение "Time limit excedeed". "Wrong answer" - это ерунда, сиди и отлавливай баги, а вот оптимизация при которой не знаешь где затык и за что хвататься, когда приходится перелопатить весь код снизу до верху и полностью переписать программу, это дорогого стоит. Если в языке нет специфических встроенных библиотек, то наивные алгоритмы по времени точно не пройдут, это делает сложность курса повышенной. И тем выше удовольствие от того факта, что со всеми задачами справился. Больше всего боли вызвала предпоследняя задача, казалось, что все перепробовал и зашел в тупик. А вот на последней заметил, что в голове уже роилась куча идей, что можно попробовать то и это. Самое ценное: задача решалась в более спокойном ритме и решилась до иссякания идей! Проходил курс уже после того как он закончился, очень помогали комментарии к задачам от предыдущих участников, без них неизвестно насколько бы все это затянулось. Присоединяюсь к просьбам о следующей части курса. Например, что-нибудь о графах, поиске в глубину и ширину в них, нахождение оптимальных путей и т.п.
Rated:  5
Курс действительно бомба! Теперь будем ждать продолжения )
Артём К June 9, 2017 link
Rated:  5
Спасибо за курс! Понравились задачи, особенно последние две. Интересны были новые применения стэка с поддержкой минимума, реализация очереди с помощью стэков, приминения хэширования для поиска совпадения и др. А так же математические доказательства, но они скорее оставляют иллюзию понимания. Из недочетов. Как мне показалось, курс не стремиться охватить многое, а скорее выхватывает интересные, необычные моменты. Не было графов и др. тем. Может быть стоило бы добавить больше задач, но по качеству тестов для существующих задач, курс явно выше обычного уровня (codewars, hackerrank, и др.)
Play
Current Time 0:00
/
Duration Time 0:00
Remaining Time -0:00
Stream TypeLIVE
Loaded: 0%
Progress: 0%
00:00
Fullscreen
00:00
Mute
Playback Rate
  • 2x
  • 1.75x
  • 1.5x
  • 1.25x
  • 1x
  • 0.75x
  • 0.5x
1
Chapters
  • Chapters
Play
To watch this video please visit https://stepik.org/lesson//step/
5 All reviews

В курсе будут рассмотрены структуры данных, наиболее часто использующиеся на практике: массивы, списки, очереди, стеки, динамические массивы, очереди с приоритетами, системы непересекающихся множеств, хеш-таблицы, сбалансированные деревья. Вы узнаете, как такие структуры данных реализованы в разных языках программирования, и, конечно же, потренируетесь самостоятельно их реализовывать, применять и расширять.

Open date:
Apr 17, 2017
Last deadline:
Jun 5, 2017
Workload:
5–7 часов в неделю
Expected time to complete:
29 hours
Language:
Русский
Certificate:
Computer Science центр
Certificate condition: 9 points
With distinction: 12 points

About the course

В курсе будут рассмотрены структуры данных, наиболее часто использующиеся на практике: массивы, списки, очереди, стеки, динамические массивы, очереди с приоритетами, системы непересекающихся множеств, хеш-таблицы, сбалансированные деревья. Вы узнаете, как такие структуры данных реализованы в разных языках программирования, и, конечно же, потренируетесь самостоятельно их реализовывать, применять и расширять.

Основная цель курса — узнать, как устроены основные структуры данных (чтобы не пользоваться их готовыми реализациями как чёрным ящиком, а точно знать, чего от реализации ожидать), и научиться выбирать подходящую структуру данных при решении заданной вычислительной задачи.

Данный курс является продолжением курса «Алгоритмы: теория и практика. Методы». Если вы не проходили этот курс, мы настоятельно рекомендуем вам пройти хотя бы его первую неделю.

Requirements

Знание одного из распространённых языков программирования (C++, Java, Python, Octave, Haskell) на базовом уровне: циклы, массивы, списки, очереди. Базовые знания математики: доказательство от противного, доказательство по индукции, логарифм, экспонента.

Target audience

Все желающие разобраться в том, как устроены основные структурах данных и как их использовать и расширять.