Как стать автором
Обновить

Сложно, но можно: как я совмещал работу и учебу на одной из самых сильных программ по программированию в России

Время на прочтение8 мин
Количество просмотров9.5K
Всего голосов 3: ↑3 и ↓0+3
Комментарии14

Комментарии 14

НЛО прилетело и опубликовало эту надпись здесь

Не автор, но частично отвечу, как выпускник той же программы и преподаватель последние пару лет.


Как так оказалось, что вы прошли вступительные испытания, но не могли понять какой-то материал?

Первая причина, общая для всех вузов: в бакалавриат все поступают либо по ЕГЭ, либо по олимпиадам. Есть ещё целевое, квоты, иностранцы, но их очень мало.


Единственный способ, которым университет влияет на поступление — выбор списка олимпиад для зачисления БВИ (без вступительных испытаний). Свои экзамены могут проводить только МГУ, СПбГУ, плюс творческие специальности (к коим программирование формально не относится).


А ЕГЭ проверяет далеко не всё. Например, я лично видел, как поступивший к нам человек, очень хорошо сдавший ЕГЭ по информатике, не в состоянии за час написать рабочее решение задачи "A+B" (считать два числа, сложить, вывести) на своём ноутбуке на произвольном языке программирования с использованием чего угодно, включая гугл. Мы всё-таки предполагаем, что абитуриенты умеют и считать, и хоть на чём-то хоть что-то уверенно программировать.


Дальше специфика программы. Материала просто очень-очень много по всем предметам, и надо что-то делать каждую неделю. Хочется, чтобы интересно было всем поступившим, в том числе крутым олимпиадникам, но при этом в конце не было сильного расслоения по уровню.


Конкретно на этой программе решается в сторону "давайте по максимуму подтянем всех отстающих, насколько сможем". Как мне кажется, объяснения и контакт с преподавателями очень хорошие, всегда можно задавать вопросы и просить консультации (школьникам, правда, сложно к этому привыкнуть поначалу). Плюс некоторые концепции кто-то схватывает сразу, а кому-то надо вникнуть. Например, из математики я наслаждался матаном и не очень понимал алгебру, а кто-то — наоборот. Просто щёлкало лучше.

НЛО прилетело и опубликовало эту надпись здесь

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


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


Второй вариант подходит не всем, это нужно а) уметь работать в высоком темпе; б) уметь балансировать на грани зачётов, просто потому что для получения "хорошо" или "отлично" не хватает времени, всё ушло на условно-базовые вещи.


Учить можно же в целом по-разному. Можно дать ресурсов, тестов, не мешать, в конце спросить. Можно учить спокойно и по чуть-чуть всему. Можно спокойно и глубоко, но предметы выдавать по очереди. Можно очень активно, быстро, широко и глубоко, насколько это разумно (на чей-то вкус) делать. У нас — последний вариант.


Могу, например, поподробнее рассказать про курс по C++. Я не объясняю, что такое переменная, массив, цикл, функция, рекурсия, строчка и целое число. Это есть во всех императивных языках в том или ином виде: много кто изучал Python, чуть меньше Pascal, некоторые энтузиасты приходят с JavaScript, Java, олимпиадники — с олимпиадным C++. Я предполагаю, что люди уже умеют выражать свои мысли на языке программирования и их надо обширно доучить а) специфике C++; б) читаемости; в) написанию корректного кода. Пункт "в" в меньшей степени, потому что ещё отдельно есть курс алгоритмов.


А вот про специфику C++ рассказываем и показываем обязательно: есть компилятор, есть разные версии, есть UB в разных видах (предваряя это примером "смотрите, вышел за границы массива, а у меня всё сработало"), есть санитайзеры, ловить какие-то ошибки так, дебажить так, вопросы по языку задавать сюда и туда, стандартные грабли выглядят так. Это базовый уровень для алгоритмических задач.


Дальше можно пойти углубляться в специфику. Показать, что можно делать свои структуры/классы, чтобы что-нибудь инкапсулировать, потому что так удобнее отлаживать и доказывать корректность. Показать неявные преобразования и перегрузку операторов на примере, скажем, BigInt. Показать, как реализовывать свои шаблонные классы: vector<int> можно использовать с первых недель, для этого механизмы внутри использовать необязательно. Си с его указателями и ручным управлением памятью тоже не в начале года ни в коем случае — вот когда потребуется вызвать сишное API, тогда и смотрим на char*, null-terminated strings и extern "C". Где-то в середине второго семестра можно уже и вектор самостоятельно написать (там очень много сложного под капотом совмещается).


Жёсткий ли курс? Да. Например, чтобы получить больше нуля за домашнее задание требуется пройти девять автопроверок с открытыми тестами: полное соответствие выданному clang-format, отсутствие предупреждений clang-tidy, плюс семь комбинаций компиляторов и санитайзеров (GCC, Clang, Visual Studio; Address Sanitizer, Undefined Sanitizer, Valgrind).


Считаю ли я, что даём студентам нужные ресурсы? Да. Вся теория рассказывается на лекциях, все нужные инструменты и техники показываются на практиках, на сложные темы я выдавал примеры с разборами и на практиках студенты их прорешивали под присмотром преподавателей. В любой момент можно написать любой вопрос преподавателю и получить ответ или консультацию, в том числе по решению домашки.


Считаю ли я, что можно лучше? Конечно, да. Например, теорию стоит проверять не только на экзамене, а ещё и на регулярных теоретических тестах, чтобы она просыпалась в голове и помогала не только учить меньше перед экзаменом, но и — внезапно — на практиках и в домашках. Всё-таки сложно научиться видеть value categories, если толком их не понял, но сам решил, что всё понятно. Тесты помогают студентам увидеть пробелы в своих знаниях.


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


Можно ли работать 24/7 и всё равно получить не все "отл"? Да, можно. Программа сложная и рассчитана на то, чтобы ни одному из поступивших независимо от его/её крутости скучно не было.


Грустно ли это? Да, из-за этого отчисляются или переводятся — мы с этим стараемся разумно помогать.

Спасибо за комментарий! В этом посте мы подробно не останавливались на том, чему учатся студенты и как выстроен весь образовательный процесс, но об этом можно почитать вот тут.
Автор, отвечу на оставшееся.
Про вступительные испытания уже ответили, ЕГЭ далеко не показатель понимания вещей. В разных школах учат по-разному, далеко не везде проходят и усваивают весь материал, необходимый для решения ЕГЭ, а где-то показывают как что-то решить, но не объясняют почему оно так решается и что происходит.

Преподавание было в большей части хорошим, где-то отличным, где-то бывало не очень. Но всё же для паренька из обычной школы на первых же занятиях решать задачи на математическую индукцию, когда я не понимал что это такое (Мне преподаватель объяснил, несмотря на то, что это вокруг знали почти все, но доходило до меня ещё долго), когда пары по алгоритмам начинаются с асимптотики кода, а ты про такое первый раз слышишь и в голове только фраза «лол, что?», и так далее.
Всё объясняют, но такие вещи с наскоку понять очень трудно без очень хорошего фундамента знаний, часов в программе не так много, а объясняют много чего, и много чего сложного, от того и результат.

Тут есть несколько выходов:
1) Превозмогать
2) Быть подготовленным до поступления
3) Уменьшить объем программы, потратив больше времени на разжевывание материала, но тогда в этой программе не будет смысла, и, как и большинство, она перестанет учить чему-то полезному

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

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


Не говорю, что методически всё идеально — нет, конечно. И домашки бывают перегробленные, и на лекции можно что-нибудь случайно забыть рассказать (а потом узнать об этом от студентов, рассказать нормально, подвинуть дедлайн, пофиксить баллы), и в спецкурсе от профессионала из индустрии материалы занятия могут появляться только в момент начала лекции. Это, конечно, может мешать учиться.


Но, наверное, между "глубокие курсы, местами методические/организационные косяки" и "поверхностные и давности несколько лет, зато чёткие и красивые" лично мне ближе первое. Идеально-то проработать всё равно не получится, нельзя один раз сделать курс и дальше его неизменно читать, программа постоянно обновляется и итерируется.


UPD: и неудачные прочтения курсов, конечно, тоже иногда случаются. Или неудачный выбор преподавателей. Обычно видно в опросах студентов => стараемся что-то менять.

НЛО прилетело и опубликовало эту надпись здесь

А, давайте тогда про базовую математику.


Сколько прорабатывали курс с педагогами — не знаю, кстати. И вообще, увы, не слышал про такое вообще нигде, да и хороших профессиональных именно педагогов (а не специалистов, которые научились преподавать) не видел — не знаете, случаем, где найти? Спрашивал у случайных людей — все почему-то считают, что профессиональные педагоги не нужны и курс должен делать специалист в области, потому что опыт взаимодействия с педагогами крайне отрицательный: пришёл, убрал все доказательства целиком, переделал устные экзамены на тесты (которые легко катаются), ушёл. Не то чтобы я с такой позицией согласен, но положительных примеров не видел.


Сколько думают о доп. мотивации — все думают и делают примеры.


Сколько готовят иллюстрации с дизайнерами — не слышал про такое. Но не очень понимаю, как профессиональные иллюстрации могут помочь. У вас есть хорошие примеры? Мне кажется, что тут важнее суметь через картинку передать суть доказательства/концепции, а не красиво нарисовать. Я не уверен, что этим иллюстраторы тоже занимаются. Например, переделывать такие картинки в такие мне сейчас кажется неважным.


Про лабораторию HCI и публикации не знаю ничего, увы.


Вот в итоге и получается, что у студентов:
когда пары по алгоритмам начинаются с асимптотики кода, а ты про такое первый раз слышишь и в голове только фраза «лол, что?», и так далее.

Так такая реакция же в любом случае будет..? Когда-то новые концепции возникают в любом случае. Вопрос в том, что дальше с этим делать. Можно ускакать вперёд, можно дать тесты и ускакать вперёд, можно остановиться, пока не проникнется X% студентов (по выданным тестам), можно дать 100500 упражнений от простых к сложным, можно дать 10 упражнений от простых к сложным...

Кстати, по базовой математике у нас курсы — hard-версии того, что рекомендуем на Stepik: матан, дискретка. Преподаватели те же, ведут похожим образом.

НЛО прилетело и опубликовало эту надпись здесь
Курс — это в первую очередь продукт. Вы же не будете доверять дизайнеру разрабатывать архитектуру приложения


Как и у всякого продукта, у него есть три измерения: качество, время и стоимость, из которых надо выбрать два. Я думаю, что многие университеты жертвуют качеством, и мы, наверное, можем их в чем-то понять.

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

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

Кстати, можно глянуть на результаты опроса студентов набора 2019 года. Разумеется, ничего особо не доказывает: цифр не очень много, методология сбора опроса и доверительные интервалы не прописаны, это пост в корпоративном блоге, вдруг там всё зафильтровано, а комментаторов на Хабре вычислили и грозят отчислением за плохие отзывы (нет).

Зарегистрируйтесь на Хабре, чтобы оставить комментарий