26 августа 2013

Algorithms

Завершился курс Algorithms: Design and Analysis by Tim Roughgarden, это первая часть. Вторая часть начнется в сентябре, через неделю.

В этом году я уже проходил курс по алгоритмам, от Боба Седжвика, этой осенью будет повтор:
Algorithms, Part I
Algorithms, Part II

Курс Седжвика мне понравился больше. Мне он показался более структурированным, логичным, лаконичным. Начиная с простых алгоритмов, на их основе идет рассказ о более сложных. Отдельного слова заслуживает механизм оценки домашних заданий - задание должно удовлетворять ряду критериев, помимо правильности ответа. Поскольку результатом задания является код на Java - он должен пройти ограничения по корректности результатов, соответствия заданному API, размеру памяти, скорости исполнения и стилю кодирования. Впрочем, за стиль штрафных очков не начислялось.
Тема курса - алгоритмы - и он рассказывает о сортировках, деревьях, графах, архивации, о разных проблемах в этих областях и способах их решения.

Курс Тима просто другой. Я прошел пока только первую часть, но уже записался на вторую и надеюсь, что у меня хватит времени на нее. Отличие курса в том, что Тим сфокусирован не на самих алгоритмах, а на их анализе. Описываются методы анализа алгоритмов, рассказываются доказательства различных утверждений и теорем. Сами алгоритмы, возможно, придется уточнять в других источниках.

А еще, осенью анонсирован курс Седжвика Analysis of Algorithms.
Боб - довольно известная личность в computer science. Его научным руководителем был Дональд Кнут, возможно это имя покажется вам знакомым :)
Так что я рекомендую курсы по алгоритмам к прохождению. Мало того что это освежает знания (либо восполняет пробелы) - так еще и код писать интересно.