Этим летом мне выпала возможность потратить отпуск с пользой и поучиться в летней школе Intel (Intel Summer School) в Нижнем Новгороде. О том, что было на этой школе-стажировке и о том, как и зачем принимать участие в подобных программах, мне хотелось бы рассказать студентам и аспирантам российских вузов.
Для начала немного о себе. Я аспирант первого года обучения в Смоленском филиале НИУ «Московский Энергетический Институт» – ВУЗе хорошем (особенно по Смоленским меркам), но далеко не топовом. По этой причине, я был очень удивлен, что вообще попал в Intel Summer School. Еще больше я был удивлен тем, что летние школьники Intel – это не представители всем известных ВУЗов Москвы и Питера (в большинстве своем), но жители провинций. География в этом году вышла весьма впечатляющей: от Смоленска до Хабаровска, от Архангельска до Сочи. Этот факт, если и не доказывает, то хотя бы заставляет задуматься о том, что даже будучи студентом ВУЗа, о котором знают разве что в вашей области, стоит участвовать в конкурсе в летнюю школу (да и конкурсах вообще), если не жалко потратить лето на приобретение новых знаний, нового опыта и новых знакомств. Однако сразу хочу предупредить: ваша девушка может не одобрить сей затеи :).
Обучение
Чему учат в летней школе Intel? Прошу прощения заранее за некоторое «капитанство», но Intel для разработчика – это в первую очередь параллельное программирование. С него и начну. В этом году преподаватели Нижегородского Государственного Университета (ННГУ) читали курс лекций о технологиях и инструментах распараллеливания программ. В нем речь шла о TBB, Cilk+, Parallel Studio XE и об общих принципах High Performance Computing. OpenMP и MPI были вынесены на самостоятельное изучение, что, на мой взгляд, правильно, т.к. многим эти технологии уже известны. Несмотря на это, курс оказался слишком обзорным. Главным образом из-за отсутствия практики. Но как обзорный, курс следует признать полезным: тем, кто плохо знаком с параллельным программированием, он может дать отправную точку для дальнейшего развития.
Чтобы не быть голословным, приведу список лекций:
- Архитектуры, аспекты параллелизма;
- Операционные системы, аспекты параллелизма;
- Технологии для параллельных вычислений: TBB;
- Технологии для параллельных вычислений: Cilk+;
- Инструменты для параллельного программирования. Intel Parallel Studio XE. Простые числа. Сортировки;
- Инструменты для параллельного программирования. Intel Parallel Studio XE. Умножение разреженных матриц.
Стоит так же сказать, что курс является сертификационным. Успешно прошедшим тестирование, выдавался сертификат Intel Parallel Programming Professional уровня Basic. К сожалению, тестирование классическое – вопросы с вариантами ответов. Код писать никто не просит, хотя в некоторых вопросах надо понять, как он работает. Так что сертификат, на мой взгляд, говорит лишь о наличии теоретических знаний у его обладателя.
Помимо параллельного программирования в «учебном плане» летней школы были и, например, такие вот занятия:
- Введение в Business Intelligence.
- Алгоритмы физического моделирования в современных компьютерных играх.
- Введение в Agile.
- Серия лекций по computer vision: зрение роботов, распознавание прозрачных предметов и др.
- TBB Flow Graph.
- Presentation skills.
- Технологическое предпринимательство.
- Коды, исправляющие ошибки.
- Криптография с открытым ключом.
Кроме них были еще беседы о самой компании Intel, ее истории и современности, экскурсия в Itseez с серией докладов, посвященных алгоритмам компьютерного зрения и их практическому использованию и демонстрацией приложений, разрабатываемых компанией. Отдельно хочется упомянуть еще два мероприятия: семинар летней школы и конкурс идей.
Семинар летней школы – эта самая что ни на есть классическая студенческая научная конференция. «Скукотища редкая», подумаете вы и будете правы. Но есть одно но: это мероприятие задает конкурсу идей контраст, без которого, пожалуй, сам конкурс не был бы так интересен. Представьте себе очередное выступление на конференции, где надо формально отчитаться о проделанной работе (во всяком случае, большинство студентов поступают именно так) – не важно нужна кому-либо эта работа или нет. Почему бы не поучаствовать в рамках этой «конференции» в конкурсе. В конкурсах ведь надо участвовать – я с этого начал. Вся соль в том, что при таком подходе – отчитаться о работе – с вероятностью единица терпишь фиаско, и с этого начинается смена подхода. Конкурс заставляет задумываться о том, что в рамках дипломных работ, магистерских диссертаций, в рамках НИР хорошо бы заниматься чем-то полезным, нужным, как заявлено в конкурсе, не только «тебе и твоему научному руководителю». Во многом этой смене точки зрения способствует общение с членами жюри, каждый представитель которого добился успеха в области науки и бизнеса.
Стажировка
Если знания в летней школе Intel добываются из учебной программы, то основный опыт приобретается в работе над проектом. Выше я говорил, что Intel для разработчика – это в первую очередь параллельное программирование (еще, правда, компиляторы, о которых я умолчал). Но это только в первую очередь – задачи, которые предлагалось решить летним школьникам, были очень разнообразными. Это не только C++, и не только технологии распараллеливания. Среди направлений, в которых работали летние школьники, оказались компьютерное зрение, разработка мобильных приложений, разработка вэб-приложений, Business Intelligence, Data Mining, дизайн GUI и вэб-дизайн [полный список задач]. Приятен и тот факт, что примерно половина задач, так или иначе, включала в себя исследовательскую составляющую по факту, а не только по постановке: надо было проверить какой-то подход, испытать что-то на практике, найти новое и более эффективное решение. Другая половина, в основном связанная с разработкой web-приложений, – это хорошие инженерные задачи, наработки по которым возможно скоро будет можно увидеть в продуктах Intel.
Intel – это и работа в хорошей команде (во всяком случае такова команда TBB, в которой довелось работать мне), от которой быстро перенимаешь опыт. С точки зрения профессионального роста для меня два месяца работы в Intel по количеству полученного опыта можно приравнять к году работы на моем текущем рабочем месте (это без учета самообразования, только знания, полученные от команды или из проекта – книжки везде читать можно).
Заключение
Разумеется, летом кощунственно только работать и только учиться. Был и отдых: поездка на озеро Светлояр, прогулка на теплоходе, но главное – общение друг с другом и приобретение новых знакомых и единомышленников.
Если подводить итог и задаваться вопросом о том, в чем изюминка летней школы Intel, то ответом на него будет практический подход, ориентированность на нужный кому-то результат, которых не хватает, на мой взгляд, российскому образованию и российской науке. Если вам интересен подход и люди его культивирующие (не только из Intel), приезжайте в летнюю школу Intel ;).
Автор: meldo