Как в Финляндии учат программистов. Tampere University of Technology
Год назад я закончила Bachelor's Programme in Science and Engineering по специализации ICT в Tampere University of Technology. Как это было :)
В этом посте я в основном концентрируюсь на учебе с точки зрения содержания в контексте IT-сферы и программирования и сильно меньше на процессах обучения (об этом будет в другой раз).
Первый курс
На первом курсе все студенты технических специальностей проходят примерно одно и то же. Знаменитой западной возможности выбирать предметы тут скорее нет (хотя добирать дополнительные можно сколько угодно :)). Первый курс — это база.
В базу входят: вышмат, физика, совсем чуть-чуть химии, программирование, финский ? и несколько курсов из серии "как жить эту жизнь".
Зачем это сделано? Во-первых, для общего образования :) Во-вторых, из очень здравой идеи о том, что не все люди точно знают на первом курсе, чем они хотят заниматься в будущем, и круто дать попробовать разное. Передаю привет профориентации в 17 ? В моем случае это было не очень актуально, но возможность, имхо, крутая.
Как-то так выглядела программа первого курса:
Математика
Судя по тому, что я слышала от своих знакомых, достаточно похоже на то, что проходят на первом курсе в России: в основном матан, линал, алгебра и теорвер.
Физика
Четыре курса: механика, динамика, электростатика-электродинамика, квантовая физика. Абсолютно ничего не знаю про то, как должны проходить физику в университете, на мой взгляд она мало отличалась от школьной — разве что математика была чуть сложнее :)
Программирование
Два семестровых курса: по питону и по плюсам (все остальные курсы шли по 2 месяца). Что было круто — очень много практики. Каждый курс включал в себя очень много домашек и несколько больших проектов. В целом, курсы можно охарактеризовать как "обзорные" на программирование вообще: и про язык, и про какие-то полезные штуки вроде ООП, алгоритмов и компиляторов. Для меня это было странновато — я привыкла к более узким предметам — но вполне вписывается в предположение, что люди про это ничего не знают.
Остальное
Два прикольных курса: Introduction to Academic Studies и Career Planning. Это интересно: тебе буквально рассказывают "как жить эту жизнь" ? В первом случае, как учиться, во втором — как строить карьеру.
А что если хочется больше специализации?
Несмотря на то, что практики было достаточно много, я хотела больше IT. Какая физика, ну серьезно? ? На самом деле возможностей было много (самое простое: взять больше курсов, но я тогда так не умела). Что я делала?
Нашла себе research-практику: было достаточно прикольно, мы моделировали спутниковые системы.
Тусила со стартаперами. В университете есть огромное количество сообществ и гильдий, которые устраивают разные ивенты по своим тематикам. Y-Campus — это коммьюнити, поддерживающее стартапы: там было много лекций, ивентов и конференций, относящихся к IT.
Вписалась в "open practice": это когда какой-то относительно крупный проект придумывается и делается самостоятельно (не в рамках какого-то курса), но при этом тебя менторят.
Второй курс
А вот с этого момента можно было набирать любые курсы в рамках своей специализации и составлять свое расписание. На радостях я набрала двойную норму курсов ?
Математика
Здесь я просто перечислю основные курсы, которые у нас были. Общая специфика всей математики — она сильно более ориентированная на практику, чем в российской традиции.
Complex Analysis
Differential Equations
Scientific Computing (что-то вроде мат.моделирования)
Mathematics for Algorithms (дискретка)
Matrix Analysis
ICT
Это был мой major (то есть основная специализация), который, в свою очередь, делился на core studies и "фокус".
Core studies.
Introduction to Software Engineering. По сути: курс про project / product management. Сбор требований, анализ, проектирование, менеджмент.
Introduction to Signal Processing.
Principles of Programming Languages. Компиляторы.
Курс по архитектуре (с говорящим названием Programming 3).
Data Structures and Algorithms (ну вы поняли :)). Классический такой курс по алгоритмам.
Мой фокус - machine learning.
Здесь два семестровых курса по, собственно, ML. Было прикольно: много математики и при этом очень много практики. Мы делали прикольные проекты и участвовали в kaggle соревнованиях ?
Кроме этого, было два более специализированных курса.
Introduction to Audio Processing — мой любимый и по совместительству самый сложный и загруженный курс вообще за всю учебу. Про что: про то, как работать с разными типами аудио, голосовых помощников, про синтез музыки и синтез речи. Было огромное количество жесткой теории, куча практики и большой исследовательский проект.
Introduction to Image and Video Processing. По сути Computer Vision. Тоже прикольный, но практики было чуть меньше.
Третий курс
Из-за двойной нормы курсов во второй год на третий курс у меня осталось не так много предметов. Что было довольно удачно, потому что я уже работала на фуллтайме.
Математика
Algebra (нужно больше алгебры :))
Introduction to Probability and Statistical Inference (теорвер и статистика)
ICT
Computer Networking
Algorithmic Problem Solving. Прикольный курс, где нужно было просто нарешать много олимпиадных задачек и написать контест.
Functional Programming. Про хаскель и в целом про функциональные языки.
Диплом
В итоге третий курс был достаточно расслабленным в плане учебы и в основном посвящен диплому. В качестве диплома я писала кусок системы по визуализации процессов на софтверных проектах.
Задача заключалась в том, чтобы ввести какие-то метрики оценки перформанса девелоперов, визуализировать его и научиться делать предсказания на будущее.
Общее впечатление
В качестве небольшого итога могу сказать, что мне понравилась система и подход к обучению. Было очень большое количество практики и как следствие "кейсов" и какого-то real-life опыта, что полезно с точки зрения работы. Еще большой плюс был в том, что если знать, чего ты хочешь (!), можно составить программу очень четко под желаемый профиль. А если не знать (что тоже типично), то получаешь достаточно много контекста, чтобы составить представление о сфере в целом.