Як студенти стають просунутими програмістами

Як студенти стають просунутими програмістамиЗ моменту виникнення програмування було написано безліч додатків і бібліотек, реалізовані сотні алгоритмів, народилося і змінилося не одне покоління програмістів. Досить значну частку фахівців у цій галузі за свою багату історію підготував Санкт-Петербурзький національний дослідницький університет інформаційних технологій, механіки і оптики (ІТМО).

Університет всіляко сприяє розвитку молодих талантів – щоб стати досвідченим програмістом, студенту потрібно лише виявляти тягу до знань.

У XXI столітті спостерігається загальний ріст технологічної грамотності. Люди, які встигають слідувати за світовими тенденціями, отримують більше можливостей для працевлаштування. Бюро з проблем працевлаштування США передбачило появу практично 140 тисяч нових робочих місць у сфері високих технологій до 2022 році. Зараз ведеться багато розмов про те, як стати програмістом, маючи пару книг і доступ до корисних інтернет-ресурсів – варто звернути увагу і на те, яку користь починаючому програмісту може принести профільний університет.

Розвиток з першого курсу

Програмування – це повноцінна галузь знань, що вимагає інженерної підготовки. Можна провести аналогію з будівництвом: побудувати заміський будинок можна своїми руками, не маючи спеціальної освіти, а багато сайтів можна написати, просто прочитавши пару книг по PHP, CSS і HTML. Проте, не володіючи спеціальними знаннями, побудувати величезний багатоповерховий будинок не вийде, як не вийде написати скільки-небудь серйозний проект начебто пошукового движка.

Тому перший курс університету є вкрай важливим – студенти отримують фундаментальні знання, які закладають міцну основу всіх наступних напрямків навчання. Наприклад, на першому курсі бакалаврату кафедри комп’ютерних технологій Університету ІТМО студентам викладають основи архітектури обчислювальних систем, арифметичні основи ЕОМ (системи числення, операції з числами, логіка), фізичні основи ЕОМ (напівпровідники, транзистори, інтегральні схеми), теорію алгоритмів (алгоритми, структури даних, подання інформації в пам’яті комп’ютера) і мови програмування (їх завдання, рівні абстракції, принципи та парадигми, а також огляд існуючих мов).

Фундаментальні знання в обраній галузі, розуміння структури обраної дисципліни (майбутнім програмістам в ІТМО викладають дисципліну, яка так і називається – «Парадигми програмування»), а також системний підхід до навчання – основи, які намагаються прищеплювати з перших днів навчання не лише в ІТМО, але і в багатьох інших відомих вузах.

Зокрема, такий підхід практикують і в американському MIT – Массачусетському технологічному інституті. За словами Емі Гайомард (Amy Guyomard) з математичного факультету, в MIT потрібно багато працювати: «Всього через чотири дні після початку семестру нам вже видали два набору завдань і письмове завдання. Крім цього мені потрібно підготувати 20-хвилинну презентацію». Щоб добре вчитися простого старанності недостатньо. Потрібно структурувати свій день, розуміти, як працює ваша пам’ять, і навчитися розрізняти знання і розуміння. «Я бачив, як багато хто думав, що зрозуміли лекційний матеріал, але потім спотикалися на найпростіших речах, коли завдання ставали все складніше, – говорить Девід Кох (David Koh), закінчив MIT в 2011 році. – Необхідно знати основи».

Коли базис засвоєний, зі студентами працюють викладачі, запрошені з різних компаній, які не тільки читають оглядові лекції, але і ведуть практичні заняття, де розбирають проблеми, з якими стикаються у своїй професійній діяльності. У ІТМО співпраця ведеться з такими компаніями як Mail.ru Group, Яндекс, JetBrains, Транзас, DevExperts, VisualSVN (в них починаючи з третього курсу студенти можуть проходити практику і працювати над реальними проектами). Це допомагає дітям отримати найбільш повне уявлення про специфіку роботи і сучасних технологіях, а також придбати корисні навички.

Також велике поширення, у тому числі і в університеті ІТМО, отримало менторство. Ментор – це не просто радник, це людина яка передає студентам свої технічні знання, мудрість, забезпечує підтримку та допомагає їм навіть після закінчення університету. Менторство дозволяє студентам зрозуміти, як навчання в університеті допоможе їм реалізувати свої амбіції. Відносини між учням і наставником розвиваються поступово і можуть перерости у професійні стосунки, коли студент стає молодшим співробітником. Проте може статися й навпаки – підопічний ментора починає перевіряти власні ідеї і віддаляється від вчителя – це знак того, що він може діяти один і готовий до самостійного життя, що теж добре (припиняти спілкування з наставником абсолютно необов’язково).

Додаткові ресурси і самоосвіта

Більшість студентів, що надходять у технічні вузи, знайомі з програмуванням вже досить давно: брали участь в олімпіадах чи писали для себе якісь проекти. Якщо раптом програмування виявляється чимось новим, то з одним з базових мов можна познайомитися на вступному курсі університету.

Однак кожен місяць виходять нові версії програм, програм і фреймворків, оновлюється обладнання, тому фахівці IT-області повинні бути в курсі змін, що відбуваються. Можливостей для самоосвіти в комп’ютерних науках зараз величезна безліч. Можна спробувати самостійно скласти собі програму навчання, вибравши спеціальну літературу по душі, благо в інтернеті є цілі електронні бібліотеки – такий підхід активно заохочується і в університеті ІТМО. Наприклад, ряд матеріалів кафедри комп’ютерних технологій Університету ІТМО можна знайти на тут.

Крім літератури в мережі існує досить велика кількість безкоштовних відкритих освітніх платформ (Stepic, Соигѕега, 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 року в Таїланді – в ньому команда програмістів університету ІТМО знову буде боротися за першість.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*