Любимые курсы студентов МАГИСТРАТУРЫ «РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ»
Любимые курсы студентов МАГИСТРАТУРЫ «РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ»
«Разработка программного обеспечения» — первая магистерская программа нашего института. Обучение на ней очень интенсивное: на первом курсе студенты в основном проходят базовые дисциплины, а на втором формируют индивидуальный учебный план из более чем 60 курсов по выбору. В этом материале магистраны рассказали о функциональном и многопоточном программировании, а также продвинутом курсе по C++.
  • Илья Барсуков
«Функциональное программирование», лектор — Денис Николаевич Москвин, преподаватель практики — Андрей Стоян

Один из моих любимых курсов — это «Функциональное программирование». Он последовательно вводит в область, которая лежит в основе множества теоретических и практических направлений Computer Science.

Предмет не требует обязательных пререквизитов. Лектор курса Денис Николаевич Москвин с нуля объяснил нам принцип работы функционального программирования, начиная от базового бестипового лямбда-исчисления (которое настолько минималистично, что там даже нет чисел!). При этом мы получили систему, в которой можно вычислить все, что в принципе вычислимо на машине Тьюринга.

После теоретического введения мы рассмотрели практическое использование функционального подхода на конкретном языке — Haskell. С его помощью нас еще глубже погрузили в этот мир и рассказали, что такое функторы, моноиды, аппликативы, монады и т. д.

Также хочется отметить практику. Большое спасибо Андрею Стояну за его объяснения и довольно сложные задачи, которые заставили лучше осознать принципы работы каждой из рассмотренных тем.

Я считаю, что этот курс необходимо пройти каждому. Он показывает, что происходит за рамками привычных большинству языков, открывает иной взгляд на написание и понимание кода, и демонстрирует, какие гарантии и/или возможности мы можем получить от языка.
  • Георгий Семенов
«Многопоточное программирование», преподаватель – Евгений Леонидович Калишенко

В курсе рассматриваются теория и практика параллельных вычислений – от понятия pthread и когерентности кэшей до flat-combining и транзакционной памяти. Часто в начале занятия мы вместе с преподавателем брейнштормили предложенную тему и придумывали идеи, которые и становились содержанием будущей лекции.

Курс в лучшем смысле этого слова практико-ориентированный: например, мы узнали, как профилировать и исследовать исполнение программ на Linux с помощью perf, strace, gdb и valgrind, чтобы идентифицировать ошибки многопоточного исполнения.

Материал курса структурирован, а трудные вещи – например, memory ordering, – объясняются очень доступно. На занятиях Евгений Леонидович часто явно ссылался на научные статьи или презентации с конференций – это очень классно, поскольку в рамках изучения тем возникает ощущение сопричастности к общемировой научной мысли.
  • Амина Милюкова
«Программирование на C++, продвинутый уровень», лектор — Егор Башарин, преподаватель практики — Филипп Грабовой

Один из моих любимых курсов на программе «Разработка ПО» — это C++ продвинутого уровня. На мой взгляд, это один из самых загруженных предметов в первом семестре. Помимо лекций, каждую неделю нам выдавали домашнее задание: обычно оно занимало не так много времени, но бывали и непростые таски. Также на курсе есть и большие работы — мини-проекты. В отличие от обычных домашних заданий мини-проект получается более объемным и более фантазийным. Ну и, конечно же, это контрольные работы, когда ты не все успеваешь, даже трудясь в поте лица.

Стоит уделить внимание преподавателям — Егору и Филиппу. Егор читает лекции, при этом он рассказывает не что-то скучное, когда ты устаешь уже через час, а действительно полезные и интересные факты. Филипп же ведет практики и детальнее подает информацию с live-coding.

Курс можно выбрать в первом семестре: у нас все без исключения изучают плюсы, просто кто-то — базовый уровень, а кто-то — продвинутый. Мне, как человеку с непрофильным бакалавриатом, поначалу было непросто, но потом я уже более-менее догнала ребят и почувствовала себя комфортнее. Мы очень много всего успели за этот год: начали с довольно простых вещей и закончили новыми интересными фичами 23-го стандарта.

Еще хочу рассказать про свою сдачу экзамена. Я выбрала неудачный день и не успела нормально подготовиться. Егор, послушав мой бред, предложил не оценивать меня сейчас, и пригласил встретиться еще раз через неделю. Я всю эту неделю старательно готовилась по записям лекций, выступлениям на C++ Russia и по умному дяденьке с YouTube. Пришла на экзамен, и мы мило поболтали с Егором и по билетам, и по темам, которые я глубже изучила. В итоге за эказамен мне поставили 4.75. К сожалению, я забыла малюсенькую, но важную часть — как сделать на концептах проверку наличия метода в классе. Так что, не забывайте =)