С момента возникновения программирования было написано множество приложений и библиотек, реализованы сотни алгоритмов, родилось и сменилось не одно поколение программистов. Достаточно внушительную долю специалистов в этой области за свою богатую историю подготовил Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики (ИТМО).
Университет всячески способствует развитию молодых талантов – чтобы стать продвинутым программистом, студенту нужно лишь проявлять тягу к знаниям.
В XXI веке наблюдается всеобщий рост технологической грамотности. Люди, которые успевают следовать за мировыми тенденциями, получают больше возможностей по трудоустройству. Бюро по проблемам трудоустройства США предсказало появление практически 140 тысяч новых рабочих мест в сфере высоких технологий к 2022 году. Сейчас ведется много разговоров о том, как стать программистом, имея пару книг и доступ к полезным интернет-ресурсам – стоит обратить внимание и на то, какую пользу начинающему программисту может принести профильный университет.
Развитие с первого курса
Программирование – это полноценная область знаний, требующая инженерной подготовки. Можно провести аналогию со строительством: построить загородный дом можно своими руками, не имея специального образования, а многие сайты можно написать, просто прочитав пару книг по PHP, CSS и HTML. Однако, не обладая специальными знаниями, построить огромное многоэтажное здание не получится, как не получится написать сколько-нибудь серьезный проект вроде поискового движка.
Поэтому первый курс университета является крайне важным – студенты получают фундаментальные знания, закладывающие прочную основу всем последующим направлениям учебы. Например, на первом курсе бакалавриата кафедры компьютерных технологий Университета ИТМО студентам преподают основы архитектуры вычислительных систем, арифметические основы ЭВМ (системы счисления, операции с числами, логика), физические основы ЭВМ (полупроводники, транзисторы, интегральные схемы), теорию алгоритмов (алгоритмы, структуры данных, представление информации в памяти компьютера) и языки программирования (их задачи, уровни абстракции, принципы и парадигмы, а также обзор существующих языков).
Фундаментальные знания в выбранной области, понимание структуры выбранной дисциплины (будущим программистам в ИТМО преподают дисциплину, которая так и называется – «Парадигмы программирования»), а также системный подход к обучению – основы, которые стараются прививать с первых дней учебы не только в ИТМО, но и во многих других известных вузах.
В частности, такой подход практикуют и в американском MIT – Массачусетском технологическом институте. По словам Эми Гайомард (Amy Guyomard) с математического факультета, в MIT нужно много работать: «Всего через четыре дня после начала семестра нам уже выдали два набора задач и письменное задание. Помимо этого мне нужно подготовить 20-минутную презентацию». Чтобы хорошо учиться простого усердия недостаточно. Нужно структурировать свой день, понимать, как работает ваша память, и научиться различать знание и понимание. «Я видел, как многие думали, что поняли лекционный материал, но потом спотыкались на самых простых вещах, когда задания становились все сложнее, – говорит Дэвид Кох (David Koh), закончивший MIT в 2011 году. – Необходимо знать основы».
Когда базис усвоен, со студентами работают преподаватели, приглашенные из различных компаний, которые не только читают обзорные лекции, но и ведут практические занятия, где разбирают проблемы, с которыми сталкиваются в своей профессиональной деятельности. В ИТМО сотрудничество ведется с такими компаниями как Mail.ru Group, Яндекс, JetBrains, Транзас, DevExperts, VisualSVN (в них начиная с третьего курса студенты могут проходить практику и работать над реальными проектами). Это помогает ребятам получить наиболее полное представление о специфике работы и современных технологиях, а также приобрести полезные навыки.
Также большое распространение, в том числе и в университете ИТМО, получило менторство. Ментор – это не просто советник, это человек который передает студентам свои технические знания, мудрость, обеспечивает поддержку и помогает им даже после окончания университета. Менторство позволяет студентам понять, как учеба в университете поможет им реализовать свои амбиции. Отношения между учащимся и наставником развиваются постепенно и могут перерасти в профессиональные отношения, когда студент становится младшим сотрудником. Однако может произойти и наоборот – подопечный ментора начинает проверять собственные идеи и отдаляется от учителя – это знак того, что он может действовать один и готов к самостоятельной жизни, что тоже хорошо (прекращать общение с наставником совершенно необязательно).
Дополнительные ресурсы и самообразование
Большинство студентов, поступающих в технические вузы, знакомы с программированием уже достаточно давно: участвовали в олимпиадах или писали для себя какие-то проекты. Если вдруг программирование оказывается чем-то новым, то с одним из базовых языков можно познакомиться на вводном курсе университета.
Однако каждый месяц выходят новые версии программ, приложений и фреймворков, обновляется оборудование, поэтому специалисты IT-области должны быть в курсе происходящих изменений. Возможностей для самообразования в компьютерных науках сейчас огромное множество. Можно попытаться самостоятельно составить себе программу обучения, выбрав специальную литературу по душе, благо в интернете есть целые электронные библиотеки – такой подход активно поощряется и в университете ИТМО. Например, ряд материалов кафедры компьютерных технологий Университета ИТМО можно найти здесь.
Помимо литературы в сети существует достаточно большое количество бесплатных открытых образовательных платформ (Stepic, Сoursera, Codecademy, Code School, Treehouse). На них можно найти понятные интерактивные уроки по всем существующим языкам программирования, в ходе которых предлагается прослушать теоретический материал, а затем выполнить практические задания (в ИТМО их рекомендуют первокурсникам, не получившим достаточного базиса знаний в школе и во время подготовки к поступлению в университет).
Например, MIT’s Open Courseware предлагает уже более 2100 курсов по самым разнообразным тематикам, куда входят и информатика с электротехникой, а Coursera перевалила отметку в 1 миллион студентов. Что касается самого университета ИТМО, то он стал одним из восьми вузов России, ведущих онлайн-проект «Национальная платформа Открытое образование», где пользователи могут пройти выбранный курс и (при необходимости) перезачесть его в собственном университете.
Сейчас на платформе Открытого образования ведутся 4 курса университета ИТМО – среди них есть, например, курсы по веб-программированию и управлению мехатронными и робототехническими системами.
Не так давно для онлайн-курсов было найдено еще одно применение – подготовка школьников. Подобные занятия позволяют молодым людям начать знакомство с вузовской программой, что упрощает последующую адаптацию и усвоение материала. В университете ИТМО для этого существуют и специальные очные курсы подготовки – все это позволяет будущим студентам получить представление о том, как будет проходить обучение в вузе.
Навыки самообразования невероятно важны для будущих программистов хотя бы в силу того, что информационные технологии сейчас развиваются очень быстро. Записываться на онлайн-курсы и читать дополнительную (пусть и доступную) литературу – не самое увлекательное занятие, поэтому сейчас в России набирает популярность проведение так называемых «летних школ» по образцу Западных университетов, когда студенты в летний период принимают участие в различных образовательных программах, проводимых в кампусе. На таких курсах студенты отдыхают и занимаются любимым делом одновременно.
В отрыве от (иногда) рутинной университетской деятельности учащиеся достигают больших результатов. Несмотря на большую популярность летних школ как формата дополнительного образования в студенческой среде, одна из самых известных летних школ ИТМО – Школа лазерных технологий – ориентирована на старшеклассников и помогает не только углубить свои знания по физике и оптике, но и определиться с будущей профессией.
Олимпиады и тренировки
Однако самым важным в процессе обучения является не столько прослушивание лекций и чтение книг, сколько решение практических задач. Большинство продвинутых программистов интересуются информатикой еще со школы. Участие в интернет-олимпиадах, начиная с седьмого (или десятого) класса, обеспечивает постепенное освоение материала, что приводит к высочайшим результатам на всех последующих олимпиадах регионального и мирового уровней. Систематическое участие в конкурсах позволяет закрепить знания и навыки, которые позже применяются при решении задач и пригождаются в процессе обучения и работе. Олимпиады организуются как высшими учебными заведениями, так и региональными органами образования и иными организациями. Они проводятся и под эгидой ИТМО. Победители и призеры олимпиад для школьников получают льготы при поступлении в российские вузы.
Поступив в вуз, первокурсники только начинают свой путь. В ИТМО продвинутые «перваки» обучаются у таких же продвинутых преподавателей и профессоров, но если вдруг им оказывается мало университетской программы, то в вузе проходит огромное количество дополнительных мероприятий: тренировки по спортивному программированию и анализу данных, различные тематические встречи, конференции и семинары, а также другие проекты. Помимо этого разрабатывается платформа для проведения соревнований.
Причем олимпиады не обязательно должны быть строго математическими или научными. Очень просто добавить в серьезное соревнование элементы игры: тот же MIT проводит конкурс Battlecode, который длится четыре недели. За это время командам не более чем из четырех человек нужно написать и откалибровать искусственный интеллект, который будет руководить виртуальными солдатами в 3D пространстве. Финал BattleCode всегда собирает в аудитории несколько сотен студентов.
Еще один пример того, что обучаться можно с азартом – соревнование PokerBots, во время которого, как несложно догадаться, командам за один месяц нужно запрограммировать бота для игры в покер. По истечению времени все программы сходятся за одним «столом» для проведения захватывающего покерного турнира.
Вообще, концепция соревнований пришла в мир наук из спорта, искусства и военного дела. По аналогии с Олимпийскими играми, в XVIII веке академии Европы организовывали своеобразные конкурсы с призами, чтобы подстегнуть молодых ученых к решению важных математических и научных проблем. Поскольку соревнование является частью нашей культуры, и жажда соперничества у нас в крови, подобные олимпиады помогают студентам добиваться высоких результатов и подготавливают их к самостоятельной жизни.
«Школа» победителей в олимпиадах
Командное программирование – это интеллектуальный спорт, как шахматы, где три участника должны уметь грамотно координировать свои действия, распределять функции и задачи, сохранять предельную концентрацию и не терять самообладания.
Университет ИТМО имеет не только опыт проведения соревнований по программированию, но также опыт побед в них. Кафедра компьютерных технологий уже много лет работает по проверенной и хорошо отлаженной схеме: работа с подающими надежды школьниками, специальные занятия со студентами, создание условий для самореализации выпускников. Такой подход позволил университету неоднократно побеждать во многих российских и мировых чемпионатах по программированию.
В 2015 году Питер вновь чествовал команду программистов в составе Геннадия Короткевича, Артема Васильева, Бориса Минаева и тренера Андрея Станкевича. Они одержали победу на престижном чемпионате мира ACM ICPC, популярность которого с каждым годом только растет.
Количество участников ACM ICPC
Команды ИТМО становились чемпионами мира 6 раз, тогда как ни одному вузу не удавалось победить больше трех. Участникам требовалось предложить решение тринадцати задач за 5 часов. Команда ИМТО установила новый рекорд в рамках чемпионата, верно решив все задания – до сих пор этого не удавалось сделать никому. В 2015 году в четверку лидеров кроме ИТМО также вошли команды Университета Цинхуа (Китай), Токийского университета (Япония), Московского государственного университета им. М.В. Ломоносова (Россия).
С задачами можно ознакомиться на сайтах соревнований; очень часто там же публикуются и их разборы (здесь и здесь).
Для призера 2015 года Геннадия Короткевича из команды университета ИТМО это уже вторая медаль на ACM ICPC. Первую он завоевал в 2013 году вместе с Михаилом Кевером и Ниязом Нигматуллиным. По правилам чемпионата, один студент может принять участие в финале лишь дважды. На своей первой международной олимпиаде в 2006 году он завоевал серебро (до первого места не хватило всего 6 баллов) и с тех пор «не вылезает» из призов – Геннадий стал первым в истории победителем всех престижных мировых соревнований по спортивному программированию, проводимых знаковыми компаниями, в том числе зарубежными: Facebook Hacker Cup, Russian Code Cup, Kotlin Challenge и Topcoder Open. А летом 2015 года Геннадию Короткевичу удалось стать трехкратным победителем чемпионата мира Яндекс.Алгоритм и двукратным чемпионом Google Code Jam.
О программистах бытует мнение, что они ничем кроме компьютера не интересуются, но Геннадию интересен большой теннис, а в перерывах между занятиями он любит поиграть в футбол. Вообще занятия спортом, особенно командными видами, позволяют наладить отношения между участниками коллективов, в том числе, как ни странно, и в командах по программированию.
Конечно, в жизни программиста спорт – составляющая необязательная, но, тем не менее, важная: всеобщий социологический опрос в США показал, что существует зависимость между занятиями спортом и уровнем интеллекта. Людей спрашивали, когда они занимались спортом последний раз, и чем они занимались, а также просили пройти IQ-тест.
На графиках видно, что с прохождением IQ-теста лучше справились люди, которые активно занимались спортом и участвовали в спортивных соревнованиях.
Вот неплохое видео на эту тему:
Текущие мероприятия
Университет ИТМО не собирается сбавлять обороты – необходимо находить и воодушевлять студентов и молодых специалистов, помогать им совершенствоваться и достигать новых высот. 5-6 декабря прошел двадцатый полуфинал студенческого командного чемпионата мира по программированию (аналогичное мероприятие для учащихся школ проходило 12-13 декабря). Среди 226 команд были определены 12 финалистов, в число которых вошли и студенты университета ИТМО. Финал чемпионата будет проходить в мае 2016 года в Тайланде – в нем команда программистов университета ИТМО вновь будет бороться за первенство.
Следите за анонсами на сайте ИТМО: neerc.ifmo.ru и neerc.ifmo.ru/school
Автор: Университет ИТМО