Первые процентов 85% курса вызывают восторг. Подача информации грамотно разделена на множество небольших шагов, на каждом из которых подробный разбор очередного "кирпичика" в понимании устройства графов и работы с ними. Что такое графы сами по себе, какие есть способы хранения и их обхода, алгоритмы работы с графами - всё это подаётся максимально доходчиво и тщательно в первых 85% курса. И, что особенно радует, в курсе много объёмных и сложных задач! Обычно в курсах Иосифа с моей стороны часто есть запрос на "побольше бы задач"=) Здесь с этим всё отлично. Также плюсом курса является возможность проходить его на разных ЯП, а реализации алгоритмов и примеры в теоретической части приводятся сразу на 3 языках: C#, C++, Python.
Как мне кажется, этот курс будет максимально полезен именно тем, кто вообще не знаком с графами, но при этом "в программировании в целом" желательно уже иметь крепкую базу, новичкам будет трудно. Помимо основ нужно знать базовые структуры данных, алгоритмы, иметь представление об ООП и т.д. У меня была именно такая ситуация. Я прошёл множество курсов, но именно с графами не сталкивался. Хотя мне иногда попадались задачи, которые, как я теперь понимаю, нужно решать именно пользуясь знаниями теории графов. Со знаниями, полученными на этом курсе, я бы теперь намного легче решил некоторые самые сложные задачи, которые либо другими способами ковырял в муках (задача на курсе Балакирева с поиском кратчайшего пути в метро), либо вообще обошёл стороной. Если Вы уже проходили графы в вузе или изучали самостоятельно, то вряд ли за такую стоимость данный курс будет иметь для Вас смысл. Курс ограничивается разбором самых распространённых и базовых вещей.
О минусах. Оставшиеся 15% курса выглядят так, будто авторы торопились его доделать. Возможно, переключились на другой проект в тот момент. После тщательного и добросовестного разбора графов и всего связанного с ними начинается раздел алгоритмов поиска кратчайших путей. Разобрано два алгоритма: Дейкстры и Флойда. И если с первым всё супер, то у второго отсутствует реализация на C#. Если это покажется читателю мелочью, я приведу цитату из теоретической части главы с разбором данного алгоритма:
"Алгоритм Флойда-Уоршелла используется, если нужно найти пути от всех вершин до всех и у нас есть матрица смежности. На этом шаге мы посмотрим на его реализацию, а после разберем как он работает. Это связано с тем, что алгоритм легче написать, чем понять почему он работает."
Т.е. сами авторы говорят учащемуся, что проще будет разобраться в алгоритме, если сначала изучить его реализацию. И не приводят её на C#, при том, что курс называется "PRO C#. Графы". 3 месяца назад одной из сокурсниц оставлен комментарий с вопросом "А где реализация на C#?" и ответом на него от Иосифа так же 3 месяца назад: "упс. Косяк. Сделаем". Прошло 3 месяца, реализации нет.
И если конкретно вот этой теме всё равно можно поставить 4.5 балла из 5 за отличный теоретический разбор, хорошие задачи и т.п., сняв пол балла за отсутствие реализации на C# (титульный язык курса и команды Иосифа), то последний 6 раздел, посвящённый Деревьям, полное разочарование. В подразделах с разбором бинарного дерева и кучи нет реализаций на C#, только C++ и Python. Курс точно из линейки "PRO C#"? Теория по деревьям проносится просто галопом. Стиль изложения, подача - будто с этого момента курс писал не Иосиф, а другой автор. Нет постепенного разбора отличий этой структуры, нет тщательного разбора понятий и т.п. Несколько раз встречаются мои "любимые" в курсах фразы, как, например вот эта:
"Существуют множество подходов к балансировке дерева, такие структуры данных как красно-черное дерево и АВЛ-дерево решают эти задачи. Внутри эти структуры данных используют бинарное дерево поиска с некоторыми модификациями его операций. В интернете можно найти множество информации об этих структурах данных."
А я зачем на этот курс пришёл? Он стоит 10 000, это совсем, СОВСЕМ не дёшево для такого объёма информации. У меня была скидка за отзыв на другой курс, но всё же. Я не говорю, что нужно в курс впихнуть вообще всю возможную информацию. Ссылаться на видео, статьи, книги, давать ссылки на документацию - это отличный подход, но ключевое здесь - для расширения и углубления информации, чтобы те из учеников, кто заинтересовался основой пошёл и почитал подробнее. А вот в приведённой выше цитате мне просто вскользь кинули умные термины "красно-черное дерево" и "АВЛ-дерево" и всё. Люди ленивые, это ну просто биологический факт. Поэтому одна из задач курса - заинтересовать, дать дополнительную мотивацию! Почему не дать хотя бы определение, что это за деревья? Почему не посвятить хотя бы по абзацу чем они отличаются от бинарного дерева и для чего используются, а вот уже потом ладно, так и быть, "подробнее почитайте сами в интернете"?
Продолжаем про стиль повествования в данном разделе. Теория по деревьям в целом поместится на одном листе А4. Основные определения разобраны в одном-двух предложениях. Пример:
"Следующее понятие, которое мы рассмотрим - это высота дерева. Высоту дерева можно вычислить уже зафиксировав корень. Высотой дерева называется размер самого длинного пути от корня до листьев. Из этого понятия вытекает понятие высоты вершины. Высотой вершины (или уровнем вершины) называют длину пути от корня до этой вершины. Считать высоту вершины (иди дерева) можно и по количеству вершин и по количеству ребер, как именно уже будет зависеть от задачи, которую вы решаете, и от того, как вам удобно."
Понятию "Высота дерева" посвящена одна строка, понятию "Высота вершины" - две строки. Можно было хотя бы иллюстрацию прикрепить. Далее сказано, мол как именно считать высоту - зависит от задачи. Больше ни слова не сказано о том, как можно посчитать высоту дерева. Нооооо, первая же задача после блока теории не просто на поиск высоты дерева, а на то, чтобы определить, является ли дерево сбалансированным (т.е. нужно посчитать высоты правой и левой ветвей относительно каждого узла дерева!). И как я должен в данной ситуации понять, какие есть вообще подходы к определению высоты вершины, какой подход разумно использовать в данной задаче? Ну хорошо, я посидел несколько часов, решил. Думаю, гляну сейчас эталонное решение в разделе решений. А его нет=) Вообще в разделе деревьев нет эталонных решений от команды курса=) Т.е. в теории упомянули, что подходы есть разные и они зависят от задачи, но нигде и никак эти подходы не демонстрируют!
Подведу итог. К сожалению, концовки книг, фильмов, и т.п. очень часто довольно сильно влияют на общее впечатление. Не смотря на то, что 85% курса реально хороши (повторюсь - для тех, кто не знаком с графами) но вот финал курса, сделан просто на 2 балла из 5... Я сначала даже подумал, что деревья недавно добавлены в курс, мол дополняются постепенно.. Но нет, 2 года назад, как и остальные материалы. Извините, Иосиф, я очень Вам благодарен за курс в целом, но поставить за него могу только 4 балла. Особенно с оглядкой на цену в 10 тысяч.