Два года назад на меня сильное впечатление произвела хабрастатья «Стивен Вольфрам проанализировал свою жизнь». К тому времени я уже года два записывал в Google-календаре, что и когда я делал, но к тому моменту я не задумывался, о том, что можно сделать с этой информацией. После прочтения той статьи, я понял: эту информацию можно анализировать! Сейчас я могу посчитать сколько раз мы с друзьями собирались играть в баскетбол за эти годы, сколько часов я провёл в больнице и т. п.
На этой неделе я сделал последнюю домашнюю работу в ШАД и решил посчитать сколько времени у меня ушло на обучение, сколько я в среднем тратил в неделю, сколько строчек кода я написал и т. д. Построил несколько графиков и гистограмм, показал их друзьям и понял, что, возможно, такая информация будет интересна кому-либо ещё. Так что если вы хотите узнать сколько страниц отчётов было написано, насколько верна оценка нагрузки в ШАД в 15–20 часов в неделю, а также моё субъективное мнение о курсах в ШАД, то добро пожаловать под хабракат.
Итак, скачиваем календарь с интересующей нас информацией, пишем небольшой скрипт и получаем следующую картинку.
Каждый блок соответствует семестру, каждая вертикальная полоска из 24 клеток в блоке — суткам, каждая клетка — часу в сутках. Цветами отмечено время, затраченное на какой-либо шадовский курс.
Первое, что бросается всем в глаза — в третьем и четвёртом семестрах я ленился. Это правда, можно всё перевести в числа и получить следующую таблицу.
Название курса | Количество затраченных часов | Замечание |
---|---|---|
Дискретный анализ и теория вероятностей | 63.5 | |
Алгоритмы и структуры данных поиска | 73 | |
Обучение языку C++ | 38 | |
Лингвистика | 27 | |
1-й семестр | 201.5 | |
Алгоритмы и структуры данных поиска | 43.5 | |
Обучение программированию | 21 | |
Машинное обучение | 45 | |
Сложность вычислений | 30.5 | |
Параллельные и распределённые вычисления | 2 | Не сдавал |
2-й семестр | 142 | |
Машинное обучение | 43.5 | |
Автоматическая обработка текстов | 34.5 | |
Теория информации | 39 | |
3-й семестр | 117 | |
Язык Python | 21 | |
Информационный поиск | 21 | |
Основы статистики в машинном обучении | 9 | Не сдавал |
Байесовские методы в машинном обучении | 58 | |
4-й семестр | 109 | |
Всего | 569.5 |
Тут сразу же стоит сказать о том, что в данных есть некоторая погрешность, так как я записывал часы с некоторым округлением, а также чтение какой-нибудь книги, скажем по Python, здесь может быть не учтено. Как бы то ни было, получилось примерно 570 часов. Не так много на самом деле, например в приложении к университетскому диплому у меня написано 8020 часов, но, как мне кажется, часы в ШАДе были использованы эффективнее.
Могу также сказать, что сложность курса с количеством затраченного времени коррелирует: непростыми мне показались «Алгоритмы и структуры данных поиска» и «Дискретный анализ и теория вероятностей», самым же сложным курсом мне показался курс «Байесовские методы в машинном обучении», над предпоследней домашней работой по этому курсу я просто «рыдал», в последний раз у меня было такое же чувство, когда я пытался на первом курсе университета в книге Н. Бурбаки «Группы и алгебры Ли» разобрать определение свободного группоида. Тем не менее, что важно, по большинству предметов был хороший фидбек от преподавателей, указывали на ошибки, говорили что можно сделать лучше или переделать, что существенно улучшало понимание предмета.
Но продолжим, проверим: верно ли, что на выходных я занимался больше, чем в будние дни, верно ли, что к концу семестра и промежуточным дедлайнам количество затраченного времени увеличивается.
По горизонтальной оси отложены дни недели, по вертикали — число часов в этот день недели, затраченных на обучение в ШАД.
В первом семестре, когда я работал по обычной пятидневной рабочей неделе, заметно, что многое приходилось делать на выходных. Во втором и третьем семестрах, когда я писал диссертацию, — всё более-менее равномерное, провал жёлтой линии связан с четырьмя парами в этот день в универе. Распределение времени же в четвёртом семестре я тоже могу объяснить, но это объяснение не для хабрастатьи.
Также удалённое обучение интересно тем, что учиться можно где угодно, например одну из домашних работ по алгоритмам я сдавал, когда ехал в поезде Новосибирск–Омск, другую — когда ехал в троллейбусе в университет, или, например, программу по питону писал в аэропорту JFK, правда к дедлайну так и не успел. Лекции же тоже можно смотреть где угодно, зачастую я записывал лекции на телефон и слушал их по дороге на учёбу или работу. Забавно, что даже трёхэтажные формулы из лекций, которые пишутся маркером на доске, я воспринимал на слух, а вот при просмотре лекций, где весь материал в презентациях, приходилось часто смотреть на экран.
На горизонтальной оси отложен номер недели в семестре (вернее номер семидневного отрезка), по вертикальной — число затраченных часов в этой неделе.
Видно, что в первом и втором семестре число затраченных часов перед концом семестра и перед промежуточным дедлайном увеличиваются. В третьем семестре промежуточного дедлайна нет, но в конце семестра затраченное время возрастает. Про четвёртый семестр я уже писал выше. Хотя более правильным было бы делать всё заранее, а то как-то раз делал одну домашнюю работу по теории информации, чтобы сдать вовремя, в ночь после защиты диссертации и сопутствующих мероприятий, сделал, сдал, но получил ответ он преподавателя: «на самом деле 0 делится на 3», как я мог так ошибиться — не понимаю! Данный случай заставил задуматься над тем, что надо как-то избавляться от привычки всё делать в ночь перед дедлайном.
Если разделить 769,5 часов на 64 недели, то получится примерно 9 часов в неделю, но это число мало о чём говорит, гораздо информативнее следующая гистограмма.
По горизонтальной оси — интервалы затрачиваемого времени в часах, по вертикальной — сколько недель попадает в данный интервал.
Видно, что было 19 недель, в которые я тратил от 5 до 10 часов, 16 недель, в которые я тратил от 10 до 15 часов, 7 недель, в которые я потратил от 15 до 20 часов, также было 4 недели, когда было затрачено 20 и более часов. В оставшееся время я что-то делал менее 5 часов, но половина этого времени приходится на начало и конец семестров.
Наконец, посмотрим, как распределится затраченное время по часам в сутках.
По горизонтальной оси отложены часы в сутках, по вертикальной — сколько в этот час я тратил времени на обучение в ШАД.
Ямы в утренние часы вполне согласуются с тем фактом, что я в это время сплю. Также небольшой локальный максимум на красной линии в районе 7 часов утра объясняется тем, что я в это время ехал к первой паре в университет и смотрел лекции в троллейбусе. Также тот факт, что максимумы приходятся на ночь, указывает на то, что я сова.
Посчитаем, сколько было написано строчек кода и страниц отчёта.
252 страницы | |
C++ | 3139 строк |
Python | 2187 строк |
Java | 60 строк |
R | 186 строк |
Bash | 90 строк |
Конечно кода было написано не очень много, но мне и на работе хватало программирования, поэтому некоторые задания я не выполнял. А вот 252 страницы отчётов и домашних работ — это серьёзно, не уверен, что я столько домашних в универе сделал!
Теперь приведу ответы на несколько вопросов о ШАД, которые мне часто задают.
— Сложно ли поступить в ШАД?
На мой взгляд, поступить просто. Подготовка к поступлению у меня заняла 2 дня, пока я ехал в поезде Омск–Москва, у меня был с собой конспект по терверу, который я полистал.
— Сложно ли учиться в ШАД?
Как мне показалось, сложно, но дело не в том, что приходится решать достаточно серьёзные задачи, а в том, что нужно уметь распределять своё время, чтобы времени хватило на всё: на учёбу, на работу, на ШАД, на спорт, на жизнь. В полной мере мне научиться распределять правильно время так и не удалось. Поэтому лучше обучаться на старших курсах университета или в первые 2 года аспирантуры, когда свободного времени больше. Если же отвечать на вопрос именно об учёбе в ШАД, то здесь ответ такой: сложность вполне сопоставима со сложностью учёбы в университете, никаких суперспособностей не требуется.
— Сколько же времени для учёбы в ШАД потребуется?
Как сказано выше, у меня для этого потребовалось примерно 570 часов. Но если делать все домашние работы и смотреть все лекции и семинары, то на 1000 часов вполне можно ориентироваться.
— Что тебе дало обучение в ШАД?
Во-первых, я стал гораздо лучше программировать на C++ и научился программировать на Python. Во-вторых, с нуля разобрался в машинном обучении, также подтянул свои знания по статистике. В-третьих, стал лучше разбираться в структурах данных и алгоритмах. Когда я проходил собеседование на стажировку в Яндекс, половину ответов на задаваемые вопросы я узнал именно в ШАД. В-четвёртых, знания, полученные из курсов «Дискретный анализ и теория вероятностей», «Теория информации», «Сложность вычислений», очень помогли мне при обучении в аспирантуре. В-пятых, во время учёбы в ШАД и во время стажировки в Яндекс я познакомился с несколькими замечательными людьми.
— Где полученные в ШАД знания применять?
Если заниматься только, скажем, разработкой мобильных приложений, то, возможно, знания о том, как анализировать данные, и не нужны. Но если работа будет связана с анализом данных или поиском, то полученные знания будут активно применяться. Также курсы по алгоритмам и структурам данных и по языкам программирования будут полезны в любом случае.
Автор: mkot