Оба классических МООК по информатике Тима Рафгардена, которые неоднократно запускались на исходной платформе Cousera и неизменно хорошо принимались студентами, сегодня перезапущены на новой платформе.
Алгоритмы: проектирование и анализ. Часть 1 была среди первых курсов, которые были предложены недавно запущенным Coursera весной 2013 года, и занимает 18-е место по количеству записавшихся на нее студентов (548 631). Он основан на курсе, который профессор Тим Рофгарден преподает в Стэнфорде с 2004 года, как правило, для студентов третьего курса бакалавриата компьютерных наук, и нацелен на:
учащиеся с хотя бы небольшим опытом программирования, которые хотят изучить основы алгоритмов
Он призван подчеркнуть общую картину и концептуальное понимание над низкоуровневой реализацией и математическими деталями.
В течение шести недель, с рабочей нагрузкой 5-7 часов в неделю, он охватывает несколько фундаментальных принципов построения алгоритмов: методы разделения и владения, алгоритмы графов, практические структуры данных (кучи, хеш-таблицы, деревья поиска), рандомизированные алгоритмы и многое другое.
Программа обучения:
Неделя 1: Введение; обозначение «большое о» и асимптотический анализ; Основы разделяй и властвуй.
Неделя 2: Основной метод анализа алгоритмов «разделяй и властвуй»; алгоритм QuickSort и его анализ; вероятностный обзор.
Неделя 3: линейный выбор времени; графики, разрезы и алгоритм сжатия.
Неделя 4: поиск в ширину и в глубину; вычисление сильных компонентов; Приложения.
Неделя 5: алгоритмы кратчайшего пути Дейкстры; груды; сбалансированные бинарные деревья поиска.
Неделя 6: хеширование; фильтры цветения.
Как объясняется в этом видео, представляющем Часть 2 курса, хотя это продолжение в том смысле, что оно охватывает более сложные алгоритмы, вам не обязательно проходить Часть 1:
Это конкретные темы: жадные алгоритмы (планирование, минимальные остовные деревья, кластеризация, коды Хаффмана), динамическое программирование (рюкзак, выравнивание последовательностей, оптимальные деревья поиска, кратчайшие пути), NP-полнота и ее значение для разработчика алгоритмов, анализ эвристики. , жадные алгоритмы локального поиска (планирование, минимальные остовные деревья, кластеризация, коды Хаффмана), динамическое программирование (рюкзак, выравнивание последовательностей, оптимальные деревья поиска, кратчайшие пути), NP-полнота и ее значение для разработчика алгоритмов, анализ эвристики, локальный поиск.
Рабочая нагрузка на этот курс составляет 6-10 часов в неделю в течение 6 недель, и, как и в Части 1, на 7-й неделе есть заключительный экзамен. Несмотря на то, что эти экзамены и наборы задач на протяжении курсов оцениваются, студенты, которые проходят курс бесплатно, т.е. без заверенного сертификата, могут участвовать в полном объеме и иметь отметку о своей работе.