Я недавно
уже писал, что на Курсере начались
Cryptography I и
Discrete Optimization. Вот что я имею сказать по результатам первых полутора недель.
Криптография пока кажется несколько скучноватой. Математика в лекциях присутствует (в частности, дискретная вероятность), но ничего особо сложного. Из обязательного к выполнению только квизы с весьма либеральными сроками. Можно еще делать необязательные упражнения по программированию. Я решил курс продолжать для общего развития, но с наименьшим приоритетом. Если все дальше будет как сейчас, то времени на это нужно 2-4 часа в неделю, включая просмотр лекций.
А вот дискретная оптимизация очень радует. Курс организован немного необычно: участникам предлагается написать решатели для семи классических NP-задач: Knapsack, Graph Coloring, TSP и т. п., плюс нескольких небольших задачек. Решения оцениваются по тому, насколько ответ близок к теоретически оптимальному. Дедлайнов, строго говоря, нет. Все задачи доступны сразу - можно решать в любом порядке. Кстати, лекции тоже организованы необычно - они сгруппированы не по неделям, а по парадигмам оптимизации. В каждой рассматриваются какие-то техники и приемы, и отдельные лекции между собой практически не связаны. Решение о порядке и необходимости их просмотра возлагается на студента.
В описании курса упомянуто, что от типичного студента ожидается, что на каждую задачу он будет тратить около 10 часов. Это кажется преувеличением, но опыт решения первой же задачи (об упаковке рюкзака) показал мне, что это скорее оптимистичная оценка. Проблема в том, что исходные данные, для которых нужно найти решение, вовсе немаленькие, и приходится основательно попотеть, чтобы решение находилось за разумное время (NP-полнота все-таки). Например, в самом сложном случае нам предлагают разместить в рюкзаке емкостью 1000000 элементы из числа 10000 известных. Первые мои попытки решения были настолько жалкими, что солвер или за несколько минут сжирал всю доступную память (около 6 ГБ) и падал, или был мной беспощадно прибит после получаса безрезультатной работы. Но после нескольких часов экспериментов с разными подходами и полировки кода мой солвер уже находил теоретически оптимальное решение для тех же входных данных за 0.5 с (при том что солвер написан на Питоне!).
Итого: всячески рекомендую всем записываться.
Кстати, в понедельник начинается повторный курс
Algorithms: Design and Analysis I (а в сентябре будет
вторая часть), тоже рекомендую, хороший курс.