Продолжаем рассказывать о нашем опыте построения «самой лучшей магистратуры по Computer Science» =) и интересоваться мнением IT-сообщества. Напомню, что нашей целью было создать магистратуру с сильной программой, в которой не было бы «лишних» курсов. И благодаря сотрудничеству с Академией Современного Программирования и лабораторией математической логики Санкт-Петербургского отделения математического института им. В.А. Стеклова РАН у нас это успешно получилось сделать.
В прошлый раз мы написали о том, как создавалась кафедра и о том, чего нам удалось добиться за 5 лет.
В этом посте мы обсудим, чему нужно учить в магистратуре по Computer Science.
Краткий отчёт за прошедший год
В целом у нас всё хорошо, один курс выпустили,
другой набрали.
… и ответы на некоторые вопросы
В прошлом году мы задавали несколько вопросов.
Как решить проблему с необходимостью читать в магистратуре базовые (бакалаврские) курсы?
Уровень образования везде разный, и к сожалению, не везде высокий. Мы набираем абитуриентов со всей России и СНГ, и поэтому нам приходится в первом семестре читать некоторые базовые курсы, чтобы у всех студентов было достаточно знаний, для понимания курсов магистерского уровня (к примеру, нам приходится читать математическую логику, т.к. без неё сложно понять что-то про функциональное программирование).
Самое разумное, что можно сделать для решения этой проблемы — это открыть собственный бакалавриат. Но это далеко не самое простое решение.
Тем не менее, мы решили пойти по этому пути и открыть свой бакалавриат с блекджеком и такой программой, что после неё в магистратуре не нужно будет читать курсов бакалаврского уровня. Однако на магистратуру это как-то повлияет только через 4 года.
Мы также прислушались к вашим советам и стали двигаться в направлении онлайн-курсов.
Подробнее об этом мы напишем в следующий раз.
Какие направления обучения заинтересовали бы вас?
Как и раньше, у нас есть три направления: теоретическая информатика, разработка ПО и алгоритмическая биоинформатика. Увеличивать количество направлений мы не стали, т.к. у нас направление специализации можно выбирать самостоятельно, изменяя список за счёт курсов по выбору.
Чем привлекать сильных студентов?
Мы считали, что сильных студентов можно привлечь бесплатной пиццей сильной программой, большим количеством практики, участием в проектах под руководством инженеров из ведущих IT-компаний, повышенной стипендией, а также возможностью заниматься наукой под руководством действующих учёных. Это всё сохранилось.
В этом году Санкт-Петербургское отделение математического института РАН, сотрудники которого принимают непосредственное участие в обучении на кафедре, получило мегагрант на создание лаборатории алгоритмов и теории сложности под руководством профессора Ф.В. Фомина (университет г. Берген, Норвегия, список публикаций). Теперь студенты нашей кафедры смогут заниматься наукой под руководством учёных из этой новой лаборатории.
Напомню, что в Академическом университете уже есть лаборатория алгоритмической биологии во главе с профессором Калифорнийского университета Павлом Певзнером (список публикаций), которая так же была создана на мегагрант.
Приглашённые курсы
Ещё один способ привлечь сильных студентов — это уникальные курсы. Для этого мы будем приглашать ведущих учёных из разных стран, чтобы они читали у нас свои курсы, как уже делается в Computer Science клубе.
В связи с этим несколько вопросов. Предположим, что у вас есть возможность позвать кого угодно для чтения курсов в ваш университет.
- Какие (зарубежные) курсы вы бы считали исключительными (т.е. не имеющими аналогов в России)?
- Каких учёных вы бы позвали для чтения курсов? (интересно, сколько раз в комментариях упомянут Кнута =))
- Вот примерный список наших курсов в магистратуре (за исключением семинаров, молекулярной биологии и иностранных языков):
Математические дисциплины:
- Алгебраические структуры
- Алгоритмы и структуры данных
- Вычислительная геометрия
- Дискретная математика
- Комбинаторика
- Конструктивная криптография
- Математическая логика
- Машинное обучение
- Сложностная криптография
- Структурная теория сложности
- Теория графов
- Теория формальных языков
Прикладные дисциплины:
- Базы данных
- Введение в Unix
- Виртуализация и виртуальные машины
- Высокопроизводительные и параллельные вычисления
- Компьютерная графика
- Компьютерное зрение
- Методы формальной верификации программ
- Обобщенное и генеративное программирование
- Операционные системы
- Основы Software Engineering
- Обработка большого объёма данных
- Программирование в ядре Linux
- Программирование в ядре Windows
- Проектирование ПО
- Разработка интерактивных интерфейсов
- Разработка языковых процессоров
- Сетевые технологии
- Тестирование ПО
- Функциональное программирование
Языки программирования:
- Программирование на языке C++
- Программирование на языке Java
- Скриптовые языки
- Языки на основе JVM
Каких курсов тут не хватает? Может быть какие-то курсы лишние?
(Мы уже ведём разговоры с несколькими учёными, которые приедут читать курсы этой осенью, но было бы интересно узнать мнение IT-сообщества.)
Спасибо за внимание! Будем рады услышать ваши комментарии.
Автор: avsmal