На ФКН НИУ ВШЭ я занимаюсь проработкой программы бакалавриата для ПМИ и курирую проектную работу. Вопрос "стоит ли давать студентам "настоящие" проекты уже с первого года обучения?" стоял перед нами еще на этапе формирования программы. Мы решили, что стоит, и, думаю, не ошиблись. Расскажу о результатах конкурса проектов, который мы провели в конце, и о некоторых проектах участников конкурса. Буду рад, если прокомментируете и расскажете, что происходит в этом направлении в других вузах (в том числе не в России): интересен опыт, который можно применить и у нас.
Всего было примерно 180 студентов, каждый из которых делал один из 53-х предложенных менторами проектов. Каждый из менторов мог по желанию выдвинуть 1-2 лучших работы из своих студентов (обычно 10 человек на ментора) на конкурс, затем кураторы проектного семинара отобрали 12 финалистов. На самом конкурсе у каждого участника было 7 минут, чтобы изложить суть своего проекта, и несколько минут для ответов на вопросы. В жюри вошли преподаватели факультета, не участвовавшие в проектной работе.
Как прошел финал конкурса — можно посмотреть здесь, а новость с подробным описанием некоторых из проектов — на сайте факультета.
Организацию конкурса еще будем улучшать, но результаты студентов нас приятно удивили.
Победитель — Глеб Пособин — начинал делать проект, целью которого было ознакомление с теорией нейронных сетей, а реализовать нужно было персептрон Розенблатта, с возможным последующим развитием. Персептрон у Глеба получился за вечер, так что в итоге он реализовал многослойную (или как сейчас модно говорить глубокую) нейронную сеть и применить ее к реальным данным (известный датасет MNIST) для распознавания рукописных цифр на картинках. Глеб также реализовал сверточные нейронные сети, которые особенно хорошо себя проявили в распознавании изображений и не только. Вообще, сейчас это очень горячая тема в науке, т.к. с 2012-го нейросети побеждают все в распознавании изображений, речи, уже в некоторых задачах распознают лучше человека, а недавно с некоторыми оговорками нейросеть научили делать машинный перевод лучше, чем создававшийся пару десятилетий до этого статистический. Для первокурсника реализовать и применить на практике нечто, что сейчас находится на переднем крае науки,- это огромная победа.
Павел Поляков, разделивший второе место, реализовал приближенное и точное решение задачи коммивояжера. Исходное описание проекта здесь. В итоге у Павла получилось лучше, чем ожидал ментор, и приближенное решение работает на графе из 100 вершин за пол-секунды и давало погрешность сверху порядка 2-3%, а точное решение на 100 вершинах работает за 1-2 минуты. Кроме алгоритмической части реализован также интерфейс и визуализация графов и получаемых решений.
Еще двое ребят должны были реализовать какую-нибудь свою идею для "умного" устройства, и у одного получились гоночки под Oculus VR, а у другого — летающий "дракон", управляемый голосом. Оба смогли продемонстрировать свои программы прямо во время конкурса.
Кроме того, на конкурс попали разного рода веб-сервисы — анализирующий инстаграм, цены на квартиры в Москве, а также дающий возможность написать что-нибудь на эзотерическом языке программирования или поиграть в набор самописных игр; лингвистический проект по очистке текстов от обсценной лексики; реализация удаленного вычислительного агента; питоновский WebDAV сервер и библиотека для работы с ним, а также сервис статистического анализа истории рыночных цен финансовых активов.
Знакомые и коллеги, которым я про это рассказывал, все прониклись: мы в свое время на первом курсе и близко такого не делали.
А почему на вашем факультете совсем не занимаются второкурсниками, третьекурсниками и далее? Учатся они по старой программе, все новые интересные курсы только для первокурсников. Получается, учимся на одном факультете, а разница в деятельности колоссальная.
В меру сил занимаемся. Новый курс по архитектуре компьютера был, курс по анализу данных от Артема Бабенко был, Коллоквиум и IT-лекторий открыты для всех, новые связки на 4-м курсе предложены, летняя практика открылась по-новому. Некоторые 4-курсники поучаствовали в проектной работе 1-го курса в качестве менторов.
Кроме того, у нас есть план вводить постепенно курсы, которые смогут выбирать и ходить на них люди разных лет обучения. Это видится как оптимальная система: на все такие курсы будет гораздо легче набрать достаточное количество записавшихся людей, чтобы обосновать проведение курса, а у студентов будет больше выбора, возможность фактически составить индивидуальный план обучения и проголосовать ногами за то, какие курсы получились хорошими.
При этом лично у меня в приоритете те, кто учится по новой программе, а также те старшекурсники, кто готов включаться в образовательную деятельность для младшекурсников, т.к. невозможно хорошо сделать сразу все, чтобы получилось хорошо, надо на этом действительно сфокусироваться. Те, кто стал ассистентами по курсам этого года, имели шанс получить многое от этих курсов, и эта возможность останется открыта в будущем.
Перечисленные вами курсы -- они для четверокурсников?
Оставаться на Коллоквиумы и IT-лектории в 6 вечера, когда пары начинаются в 9 утра -- согласитесь, некий мазохизм, да и не могут они заменить или даже с сравниться с опытом проектной деятельности, который напрочь отсутствует у более старших курсов.
Скажу вам честно, по опыту асситирования по предмету "математический анализ" -- постоянная проверка домашних задач не дала мне большого развития. Вообще получить много нового из ассистирования -- сложно, т.к. ассистентов на курсы набирают из тех людей, которые данный курс уже прослушали.
Ну да, "архитектуру компьютера и системное программирование" Виктор Ашик читал 4-му курсу. Артем Бабенко читал анализ данных для 3-го курса.
Не знаю, я в свое время после мехмата ездил в НМУ первые два года и ACM'ом еще занимался, писал контесты при каждой возможности, тогда они были редкостью. Глеб Пособин, кстати, помимо своих успехов в проектной деятельности, тоже ездит в НМУ, а еще он один из лучших на мат. практикуме. Все возможно, нужно только напрягаться.
Я точно знаю, что некоторые ассистенты по С++ и алгоритмам получили от семинаристов хороший код ревью, прежде чем их стали просить делать ревью студентам, и наверняка вынесли что-то из курса, проверяя домашки.
Артём Бабенко читал анализ данных для ПИ. До этого мы вроде обсуждали ПМИ :)
Вы молодец! И ассистенты по С++ молодцы. Однако это всё не решает проблемы отсутствия проектной деятельности и новых интересных курсов/связок для будущих третье и четверокурсников. Сталкиваемся с проблемой, что надо выбрать 5 связок из предлагаемых 10, потом отменяют 3 и выбор остаётся 5 из 7 -- очень широкий выбор, разрываемся куда пойти!
Новые дисциплины по выбору на 3-4 курсе вводятся согласно пожеланиям студентов. В прошлом году, когда факультет только образовывался, мы встречались со студентами и спрашивали их, каких курсов им бы хотелось? Основной ответ был, что не хватает курсов по программированию, т.к. среди связок всё сплошь математика. Поэтому мы нашли преподавателей на курс "Языки программирования" и "Архитектура компьютера и системной программирование", которые в течение заметного времени не проводились, как нам рассказывали. В новом учебном году мы запускаем новый курс "Высокопроизводительные вычисления" на 4м курсе, где про распределённые и параллельные вычисления будет рассказывать лектор из ШАД Олег Сухоруслов, а про GPU — Андрей Паринов. Правда, пока на эти курсы записывается меньше людей, чем на математические предметы. Также запускается новый курс "Semantic web".
Новые курсы создаются и в форме факультативов, которые в новом учебном году открыты для студентов всех курсов. Это "Математическая логика и сложность вычислений", "Теория функций", "Доп.главы линейной алгебры", "Доп.главы теории вероятностей", "Введение в биоинженерию", "Архитектура центрального процессора" (от Интел), "Обеспечение качества ПО" (от Крок), "Анализ данных на платформе SAS" (от SAS).
Список предлагаемых практик тоже расширяется. Появилась лаборатория LAMBDA, которая предлагает много интересных тем по применению машинного обучения. Больше предложений стажировок от компаний.
Боюсь, что Вы не понимаете, что "создание курса" != "проведение курса".
Вы наверняка осведомлены о минимальном количестве человек, необходимых для проведения дисциплины и наверняка знаете, что эта планка повысилась. В связи с маленьким числом людей на курсе, многие дисциплины были отменены, и фактически выбор связок превратился в "игру большинства".
Поэтому можно открывать хоть 10 связок, но они не будут проводиться по вышеуказанной причине.
Всё хорошо, но сейчас возможности не удовлетворяют императорским амбициям факультета и вуза. Например, огромный набор абитуриентов за предыдущие 2 года приведёт к учёбе в 3 смены, ибо для подсчёта семинарских аудиторий, в которых может поместиться одна группа, хватит двух рук.
Какое там посещение НМУ, это же смешно.
А нет, постойте, это же отговорки для лентяев.
Только не говорите про переезд в другое здание. МИЭМ в Строгино ждал переезда не менее 1,5 лет, недостача в бюджете говорит за своё: повышение минимального количества людей, необходимых для открытия дисциплины, открытие майноров, урезание зарплаты ассистентам -- всё свидетельствует о финансовых проблемах. Я буду рад, если я ошибусь, но я не помню, когда сроки окончания строительства не переносились.
Ещё более забавен факт негативного отношения руководства факультета к тем, кто учится в ШАД. Учишься в НМУ -- молодец, учишься в ШАД -- нет.
А зачем были нужно было рассуждать о создании первого в России факультета по computer science, а потом предлагать студентам задания из откровенного software engineering?
P.S. "мы в свое время на первом курсе и близко такого не делали." — на мехмате? Удивительно, да.
Чтобы люди научились делать законченные проекты. Научное исследование тоже таковым является. Исследования в computer science в большинстве своем очень сильно опираются на программирование, в них нужна и всяческая инфраструктурная разработка, и демки бывают крайне полезны, так что веб-сервис сделать и познакомиться с разнообразными технологиями явно не вредно. Было бы крайне странно считать проект по распознаванию цифр откровенным software engineering'ом. Желающие смогли не только попрактиковаться в программировании, но и получить мягкий вход в машинное обучение, к примеру: таких проектов была масса. Ну а разнообразие проектов — разве это плохо?
В следующем полугодии проекты будут привязаны к курсу по ОСям. Ну и научную работу это не отменяет, научный семинар идет в параллель с проектным. Есть желание попробовать в части случаев совместить работу, которая делается на проектном семинаре и по научной работе, но это уже скорее с 3-го курса.
То, что лично я ничего этого не делал на мехмате,- это ладно. Комментарий про "не делали" взят из отзывов людей с более прикладных факультетов — не буду их называть, чтобы никого не обидеть.
Кстати, с удовольствием посмотрел бы на какое-нибудь четкое определение грани между computer science и software engineering.
Легко: computer science это то, чем я хочу заниматься, а software engineering — то чем не хочу. :)
Кстати, а когда ждать общего рассказа о том, как вы видите программу второго курса? И про летние практики? Ибо ваши сообщения являются редкой возможностью узнать, как все происходящее видится сверху. Крайне полезное знание, надо сказать.
Программы отдельных курсов дорабатываются этим летом, причем не только курсы 2-го курса, но и 1-го, т.к. их еще нужно улучшать. Вопрос про общий рассказ не очень понятен — что хотелось бы услышать? В целом программа описана, и не раз — в моих постах и на сайте факультета. Итоги 2-го курса подводить будем после того, как он закончится. Что вас интересует про летние практики?
Вообще, несколько раз на факультете проходили общие встречи с первокурсниками, на которых можно было задать свои вопросы. Мы получили довольно много полезного фидбэка. Надеюсь, что со следующего года эти встречи будут уже совсем регулярными и объявлены настолько заранее, чтобы уже ни у кого не получилось сделать вид, что он об этих встречах не знал и поэтому не пришел :)
Что именно про программу 2го курса вам хотелось бы узнать?
Типичный пример — это курс по C++ vs. курс "Programming Languages".
Прошу прощения за тупой вопрос, но какой курс к чему должен относиться, и почему? Кажется, что programming languages — более общо, и поэтому больше подходит к computer science, тогда как практически заточенный курс по C++ ближе к SE, но в целом идея курса про разные языки программирования мне не очень нравится: выглядит как курс для общей эрудированности, на котором ничему глубокому не научишься.
Именно так, C++ — SE.
А чему "глубокому" можно научиться на курсе по C++? Я видел ваш курс в ШАДе, это же кошмар в чистом виде. Как кому-то может хотеться тратить несколько месяцев на то, чему можно научиться за несколько code review, придя на конкретную работу?
Про "Programming Languages": я имел ввиду что-то вроде семестрового курса по книжке Пирса. После ее чтения становятся более-менее понятны design rationales разных вещей в разных языках, и это ИМХО куда полезнее обучения template metaprogramming'у.
Боюсь, ты недооцениваешь то время, которое потратил в свое время на собственно обучение программированию, неважно на C++ оно было или на Паскале или на чем-то еще. template metaprogramming — это действительно тема для любителей. Но вот научиться писать работающие программы на каком-нибудь языке — это, IMHO, must для любого computer scientist'а, даже если он вроде как ученый и занимается вроде как теоретическими темами. Все равно ему придется писать симуляции, проводить числовые эксперименты и проверять гипотезы с использованием программирования. В наше время уметь программировать нужно уже вообще всем ученым, даже не computer scientist'ам. Ну а чтобы научиться этому, нужно, конечно, потратить значительно больше времени, чем несколько code review. Для этого просто нужно достаточно много практики программирования, чтобы набить руку, т.к. без этой практики даже простейшие задачи вызывают ступор. На какую тему при этом задачи на реализацию — это уже, на самом деле, не так принципиально, лишь бы интересно было их реализовывать.
Так-то да — если ты хорош в математике и вообще в теории, ты точно в состоянии научиться программировать, и уж тем более соблюдать style guide и т.п., но все-таки на то, чтобы научиться программировать, нужно потратить довольно существенное время.
Для пилотного потока у нас курса по C++ в этом году и не будет, только продвинутый курс алгоритмов. Programming Languages в виде рассказа про design rationales — дело хорошее, но не думаю, что это будет полезно вообще всем,- это должен быть курс по выбору, как оно и есть сейчас на 3 или 4 курсе.
Абсолютно согласен, что все ученые должны уметь программировать!
Кстати, если ставить ровно такую цель, то совершенно ясно, что учить надо Питону (при всей моей к нему ненависти как к языку вообще, и тем более как к первому языку). У Питона есть приятный бонус: исходники его интерпретатора очень понятные, поэтому можно разобраться во всех деталях.
А есть где-нибудь программа продвинутого курса алгоритмов? Я в наступающем семестре буду TA'ить Introduction to Algorithms (6.006), интересно будет сравнить.
Вот поэтому мы и начинаем с Python, а потом уже переходим к C++. Без плюсов или другого сиподобного языка все же проблематично дальше жить, а некоторые концепции вроде указателей от людей ускользают навсегда.
Программу я тебе пока в личку пришлю, а если вы ее еще и обсудите с Глебом Евстроповым, будет совсем прекрасно.
Лучше на e-mail [email protected]. Спасибо!
Собственно курс по C++ в ШАДе предлагается в первую очередь тем людям, которые осознают, что курс алгоритмов сдать с текущим знанием языка им будет сложновато. Выбор именно C++ для обучения — это уже, извините, выбор споснора бесплатного ШАДа.
Интересно, у меня было противоположное впечатление: сначала типа берешь алгоритмы, а C++ — это вроде как более с уклоном в индустрию.
По факту так: алгоритмы — обязательный для всех курс, а тем, кто чувствует, что не сдаст его (большинство вылетает из-за алгоритмов) или кому мы так подсказали, берет еще и C++ по выбору, чтобы подтянуть знание языка до необходимого уровня.
Кстати, еще один аргумент в пользу курса С++ — студенты его любят, он пользуется большой популярностью :) Т.е. находится много людей, которые хотят потратить 3 месяца на это.
Ну и железобетонный аргумент — программа Стэнфорда, курс CS106B, абстрактно для бюрократов названный Programming Abstractions,- реально курс C++, CS106X — он же ускоренный, CS106A — Java.
Практика показывает, что студенты любят, когда побольше халявы. Надеюсь, что в вашем случае это не так. Кстати, это создает некоторую проблему: если сильно обращать внимание на отзывы студентов, то постепенно все сойдется к тому, что все преподаватели будут все максимально разжевывать и давать на экзамене видоизмененные задачи из домашек. По факту в США все так и есть, увы, даже в хороших местах.
Программу Стэнфорда я бы в качестве железобетонного аргумента использовать поостерегся. По слухам, Computer Science программа там бессмысленно большая и напряжная not for a good reason.
Про то, что не надо ориентироваться только на отзывы студентов — это какие-то прямо прописные истины, обижаешь) Мы просто собираемся, обсуждаем отзывы студентов, преподавателей и заказчиков ШАДа и принимаем решение, что и как изменить. Массовый фидбэк от студентов вполне полезен, и к счастью, в него чаще пролезает фидбэк вида "слишком халявный курс", чем наоборот, потому что люди пришли учиться в ШАД for a good reason.
Оок, второй по рейтингу CS department в мире не идеален — думаю, на нашем уровне развития стремиться к нему или к MITшному — нам не так уж принципиально, да и Стэнфорд — не единственный пример. А какой там bad reason?
Рад побыть Капитаном Очевидностью. :) У вас к счастью нет такого, что исходы tenure cases зависят от отзывов студентов в отличие от.
Про Стэнфорд я знаю на уровне слухов, так что комментировать не особо хочется.
Скажем так, топовые места становятся топовыми далеко не только и не столько за счет классов. Если взять Стэнфорд, скопировать его программу, то Стэнфорда не получится.
.
Объективно отранжировать 100 проектов невозможно. Если судить по оценкам менторов (хотя у разных менторов могли быть несколько разной сложности проекты и критерии), то слабые проекты "на троечку" начинаются со 135-го места, а недотягивающие до минимальных критериев — со 153-го. В реальности ниже 100-го места есть и вполне неплохие результаты, и вообще незавершенные проекты.
Задания по проектам все подробно перечислены, вместе с критериями на "удовл", "хор" и "отл". Можешь сам посмотреть рандомные примеры и оценить. В целом, до начала семестра я старался всех менторов склонить к снижению критериев, потому что опасался, что менторы поставят задачи так, как им интересно, а первокурсникам это будет сложновато реализовать.
Более подробно на сами проекты я еще буду смотреть, но в целом-то хороший результат таков и есть: почти у всех что-то получилось, у большинства — хотя бы на четверку, а в топе есть такие, кем можно похвастаться на публику. Если совсем мечтать, то однажды на конкурс топовых проектов первокурсников начнут приходить инвесторы, но это уж совсем голубая мечта, и в этом году мы не стали звать много людей послушать, т.к. не знали, что получится.
Кстати, а вы не думали нанять несколько человек с "мировым именем", которые профессионально исследованиями по Computer Science занимаются? Придется, конечно, платить приличную зарплату, но в долгосрочной перспективе такие вещи замечательно окупаются.
Ну, как РЭШ например.
А у тебя есть знакомые профессора, желающие пожить в России?
Конкретно мне в таком духе никто не высказывался.
Но если платить чуть выше среднего по (американскому) рынку и не сильно перегружать всякой административной/образовательной работой, то кого-нибудь молодого и достаточно сильного, думаю, наймете без проблем. Senior людей, понятно, нанять гораздо сложнее, так как им нужна job security, которую вы обеспечить не можете.
Job market в Computer Science очень перегружен вообще-то. Конечно, отчасти это компенсируется тем, что люди идут в индустрию, но думаю найдется пласт людей, которые предпочтут быть профессором в Москве позиции какого-нибудь инженера в Гугле.
Вообще, странно, что вы этим не озаботились заранее. Ясно же, что если у вас не будет сильных research faculty, то первоклассного факультета явно не выйдет.
Несколько сильных научников у нас все же изначально было, пусть и по сильно ограниченному набору тем. Плюс появилась магистратура Спокойного, плюс еще про одну договариваются. Про найм людей "оттуда" мы, естественно, думали с самого начала, в ВШЭ есть под это специальная программа, и несколько иностранцев мы уже наняли, но это, на самом деле, не работает так просто: нанял человека с мировым именем — и дальше все само. Под это надо готовить и правильный момент (когда студенты уже готовы заняться серьезной наукой), и правильную инфраструктуру. Я слышал про примеры нанятых людей с мировым именем, которые, конечно, присутствуют на факультете и создают ему таким образом пиар, но вот взаимодействия со студентами на факультете не получилось — а значит все зря.
Все так. Момент действительно надо готовить.
Мне это видится так. Для начала берется пара крутых людей, которые должны: - читать один graduate курс в семестр (на английском, само собой); - руководить парой аспирантов и парой студентов.
Потом постепенно все это должно расти, с появлением соответствующей иерархии (постдоки и т. д.)
Вообще, Сонин про это неплохо писал, попробую ссылки найти какие-нибудь.
Хотелось бы еще заметить, что смысл найма людей, которые, скажем, защитились на западе, еще и в интеграции факультета в мировую науку. Вот взяли Сердюкова в Яндекс — он там приличный конвеер по производству статей наладил. Я не утверждаю, что клепать статьи должно быть самоцелью, но когда сотрудники публикуются только в "журналах из списка ВАК" — это неправильно.
А можно рассказать хоть что-нибудь про новую магистратуру (про которую договариваетесь)? И если это пока что сюрприз, то на ближайшем ДОДе уже будет про нее информация? :)
Магистерская программа "Анализ данных в биологии и медицине" под руководством М.С.Гельфанда утверждена, первый набор состоится летом 2016 года. Ориентировочно на программе будет 20 бюджетных мест. Информация совсем скоро должна появиться на сайте факультета.
Да, и на ближайшем ДОДе про новую программу расскажем, там планируется выступление Михаила Сергеевича http://cs.hse.ru/announcements/161925746.html?_r=225691444072878.75519&__t=1979049&__r=OK