Чемпионы мира по спортивному программированию ACM ICPC Владимир Смыкалов, Иван Белоногов и Илья Збань

Про школьные олимпиады

Пока ты школьник, стоит больше внимания уделять олимпиадам. Школьные олимпиады по программированию, в первую очередь, позволяют поступить в большинство вузов России на IT направления без экзаменов. Один из участников команды чемпионов 2017 года, Илья Збань, именно так и оказался в Университете ИТМО. Более того, сам вуз тоже проводит олимпиады, с помощью которых можно получить значительные льготы при поступлении. Если ученикам одиннадцатых классов сейчас нужно позаботиться о сдаче ЕГЭ, то десятый класс может сконцентрироваться на олимпиадах по программированию.

Про интерес к программированию

Не так уж страшно, если не увлекаешься программированием со школы. Для многих студентов, в том числе для некоторых участников чемпионской команды,  программирование стало серьезной частью жизни только в вузе, а олимпиады тем временем можно писать и по математике. Однако будет полезно принять участие в летней  компьютерной школе (ЛКШ) для учащихся 6-10 классов. Так, Иван Белоногов перед тем, как стать победителем в чемпионате, в качестве участника ездил в летнюю школу три раза, а в студенчестве еще трижды побывал в ней в качестве преподавателя. Следить за новостями о ЛКШ можно здесь.

Владимир Смыкалов, Иван Белоногов и Илья Збань
Владимир Смыкалов, Иван Белоногов и Илья Збань

Про олимпиадное программирование

Олимпиады по программированию нацелены во многом на то, чтобы найти такое решение задачи, которое будут работать быстро. Олимпиадное программирование отличается от промышленного тем, что на олимпиаде тебе дают шанс решить самое сложное место в программе, в то время как в коде промышленном есть много инфраструктуры вокруг, и твоя работа в основном сводится к быстрой обработке запросов. Другими словами, такой серьезной интеллектуальной части, как на олимпиаде, очень мало в промышленном программировании. По словам чемпионов, на олимпиадах их команде приходится писать порой по 2000 строк кода, в это же время рядовой программист на работе пишет на два порядка меньше.

Про поиск работы и деятельность в больших компаниях

После побед и определенных достижений, разумеется, приходят предложения, причем как от российских IT-компаний, так и от зарубежных. Однако, если будешь искать работу сам, найдешь лучше, чем ту, которую тебе предлагают. Есть большие компании, например Google или Facebook, и это хорошие места для работы, но в таких местах ты мало влияешь на итоговый продукт. Если в компании работает 60 тысяч человек, то  твой вклад в работу, каким бы классным он ни был, все равно будет мизерным. При всех других достоинствах это существенный минус больших компаний.

Про команды на чемпионате мира

Уровень команд с каждым годом растет. Прорешивание заданий прошлых лет позволяет ребятам добиваться успеха. Однако надо отметить, что, даже если команда состоит из очень талантливых ребят, это не гарантирует победу. По словам чемпионов, иногда команды из участников с очень сильными личными навыками не попадали даже в пятерку лучших команд.

Лайфхаки для поступления в Университет ИТМО от Светланы Подколзиной, 3 курс кафедры вычислительной техники

  1. Не бойся пробовать себя в новых сферах. 

Да, возможно, это потребует дополнительных сил, но вдруг это именно то, чем ты будешь с удовольствием заниматься всю жизнь.

2. Все, что тебе не нравится, делай быстро. 

Не любишь литературу или физику? Так не растягивай домашнее задание по этим предметам на весь вечер. Сделай его максимально быстро, а оставшееся время потрать на любимое дело.

3. Используй интернет для пользы.

Интересует какой-то вопрос? Не откладывай, а сразу же загугли. Хочешь выучить новый язык программирования? Найди крутые книги! Хочешь узнать, как проходят лекции в университете? Массовые открытые онлайн-курсы перенесут тебя в любой университет мира!

IT-вечер для старшеклассников
IT-вечер для старшеклассников

4. Не упускай возможности прокачать себя.

Сейчас проходит огромное количество курсов/занятий/форумов для школьников. Если у тебя есть возможность посетить что-то подобное, не отказывайся.

5. Самое важное – пиши олимпиады!

Обязательно, самые любые и, возможно, не совсем по твоему направлению – пиши олимпиады всегда и везде. Это прокачает твою стрессоустойчивость и научит тебя «впитывать» максимальное количество информации в минимальные сроки. Ну и дополнительные баллы ЕГЭ лишними не будут. А вдруг ты станешь призером Всеросса? Не узнаешь, пока не попробуешь.

Арина Буздалова, сотрудник международной лаборатории «Компьютерные технологии», – об эволюционных алгоритмах

Арина Буздалова
Арина Буздалова

Эволюционные алгоритмы чаще всего применяются для решения таких задач, для которых не существует быстрых и точных алгоритмов  решения. Например, такими являются задачи перебора всех возможных решений (например, задача о расстановке ферзей на шахматной доске произвольного размера с условием, что ферзи не должны «съедать» друг друга).  Идея эволюционных алгоритмов основана на идее эволюции по Дарвину. Так, например, любую расстановку ферзей в данном кейсе можно рассматривать как особь, и эти расстановки можно скрещивать друг с другом (обменивать половинки шахматного поля) или производить мутацию (переставлять ферзя на шахматном поле), а приспособленность в этом случае будет определяться тем, сколько пар ферзей «бьют» друг друга (чем меньше, тем лучше). 

Эволюционные алгоритмы применятся в самых разных сферах человеческой деятельности, даже в так называемом эволюционном искусстве. С помощью эволюционного алгоритма можно приближать изображение многоугольниками: представим,  что у нас есть некий эталон (допустим, картина Леонардо да Винчи «Мона Лиза»), и наша задача с помощью многоугольников вырастить «Мону Лизу» с нуля – эволюционный алгоритм справляется с этой задачей.  В данном случае особью может являться многоугольник, а приспособленностью – приближенность к оригиналу.  Однако чаще всего в эволюционном алгоритме особью является не какой-то компонент  решения, а все решение целиком (в нашем случае особью является картина, составленная из многоугольников). Сегодня в открытом доступе работает сервис Picbreeder, где можно выращивать совершенно новые картинки.

Эволюционные алгоритмы используются не только для развлечений, они используются также в серьезных практических применениях, например, в задаче вычисления кратчайшего маршрута между точками. Известно, что в конце XX века инженеры не могли спроектировать форму эффективной антенны для космического аппарата, которая бы эффективно передавала и получала сигнал. Специалисты обратились за помощью к эволюционному алгоритму, который генетически вырастил антенну необычной формы. Как только ее создали и посмотрели, как она работает, оказалось, что поведение изобретения близко к оптимальному.

Также такие алгоритмы можно использовать для генетического программирования, то есть с их помощью можно выращивать новые программы, в данном случае особь – кусок программного кода или целая программа.

Никита Алексеев, сотрудник международной лаборатории «Компьютерные технологии» Университета ИТМО, – о задачах программистов в области биоинформатики

Никита Алексеев
Никита Алексеев

Генетический код всех живых организмов хранится в их ДНК.  В конце XX века появился вопрос, как выглядит генетический код для каждого человека? В 1990 году был запущен проект «Человеческий геном»  — международный научно-исследовательский проект, главной целью которого было определение последовательности нуклеотидов, которые составляют ДНК человека, и идентификация 20—25 тысяч генов в человеческом геноме (проект просуществовал до 2003 года, когда ученые официально объявили о достижении цели). Существующий закон Мура гласит, что количество транзисторов, размещаемых на кристалле интегральной схемы, удваивается каждые 24 месяца, другими словами, каждые два года процессор ускоряется в два раза. Соответственно, стоимость вычислений удешевляется в два раза каждые два года.  В биоинформатике все происходит быстрее.  Сегодня просеквенировать свой геном можно за тысячу долларов (к слову,  среднестатистический  американец платит такую же сумму в месяц за страховку). Подобная процедура позволяет человеку извлечь из своего генома огромное количество информации о самом себе: например, понять спектр национальностей у него в крови,  предрасположенность к заболеваниям и многое другое. В конце прошлого века, когда проект «Человеческий геном» только запустили, стоимость процедуры составляла порядка трех миллиардов долларов (что превышает бюджет одного хорошего научного института в год). Затем стоимость на услугу снизилась до 100 миллионов долларов, после чего цена стала снижаться в соответствии с законом Мура, однако с 2007 года, стоимость стала дешеветь еще быстрее, и сегодня процедуру себе могут позволить многие. 

Информатика – очень важная составляющая современного мира. В свою очередь, то, что происходит с биологией и биоинформатикой, говорит о том, где находится в XXI веке передний край науки. Люди хотят жить долго, не болеть, не умирать от рака и, что самое главное, они готовы за это платить. Биоинформатика как раз про это, однако наука требует все больше новых IT-решений и иных компетенций (помимо математиков и информатиков, крайне важны компетенции биологов, химиков, физиков и других специалистов). Так, в области биоинформатики появляются все новые задачи, например, одним из последних трендов стало восстановление ДНК микрофлоры в организме человека. Задача в данном случае усложняется тем, что к ней не применить те алгоритмы, которые применяются для человеческого ДНК, поэтому сегодня нужны специалисты, которые будут разрабатывать алгоритмы для обработки этих данных.