Как я побывал в легендарной Школе 42: «бассейн», котики и интернет вместо учителей. Часть 2
В этом посте я подробнее расскажу про систему обучения и про то, какие задания выполняют студенты. В прошлом посте я начал рассказ про Школу 42, которая славится своей революционной системой обучения: там нет учителей, студенты сами проверяют друг у друга работы, платить за учебу не нужно.
Никаких учебников студенты не штудируют, лекций им не читают. Нет учителей, есть интернет и товарищи. Обучение в школе основано на принципах совместной проектной работы — peer-to-peer learning. Организаторы школы считают, что все можно найти в интернете, спросить у друзей или у более опытных студентов, с которыми вы вместе работаете над проектом.
Оценок тоже нет — просто нужно выполнить задачу правильно и полностью. Выполненные задания 3-4 раза проверяют другие студенты, таким образом, каждый может побыть и учеником, и ментором. Даже если она сделана на 90 %, это будет засчитано как провал.
Баллы зарабатывают проверкой домашнего задания других учеников. Нет оценок, есть баллы. Чтобы выставить проект на проверку, необходимо иметь определенное количество баллов — correction points. И это дополнительный фактор роста – ведь приходится разбираться в самых разных задачах, иногда превосходящих ваш уровень знаний.
И тогда, чтобы заработать всего один correction point, приходится потеть весь день, разбираясь в коде. «Некоторые проекты — это настоящий космос, от них взрывается мозг. Однажды мне повезло, и я получил за день целых 4 балла — это редкая удача», — рассказывает мой знакомый, студент Сергей.
Защищают их всегда лично, при этом важно, чтобы активное участие принимали все члены группы, и чтобы каждый понимал код и был высоко мотивирован. Отсидеться в углу не выйдет. Проекты выполняются как в одиночку и парами, так и более крупными группами. Таким образом, школа прокачивает навыки групповой работы и успешной коммуникации. Отмолчаться и отсидеться в стороне здесь не получается. А кроме того, все ученики знакомятся и общаются друг с другом, что очень полезно для нетворкинга и будущей карьеры.
Как в RPG за проекты начисляется "опыт", и после накопления определенного его количества совершается переход на новый уровень. Геймификация. Как в компьютерной игре, студенты движутся вверх по уровням и следят за своими успехами с помощью Holy Graph — «святой» карты, где наглядно показан весь пройденный и предстоящий путь. Схожесть с настоящей игрой еще и в том, что каждый новый уровень сложнее предыдущего, заданий становится все больше.
Бокал — занимается техническими вопросами и педагогической составляющей, в то время как Адм — административными и организационными вопросами. Бокал и Адм. В школе существует два основных подразделения — Бокал (технари) и Адм (администрация). Кадровый резерв Бокала/Адм пополняются за счет самих студентов, проходящих стажировку в Школе.
Как и чему здесь учат
Коду учат с самых основ, заставляя постигать саму логику программирования. Все начинается с «С». В школе пользуются исключительно Unix, считая Windows не лучшим выбором. Студенты используют компилятор gcc и текстовый редактор vim. Несколько первых уровней все проекты выполняются только на языках C и C++, IDE не применяются.
Здесь ты не можешь пользоваться функцией, пока не напишешь ее сам. «На других курсах тебе дадут функции, попросят выполнить проект, и только потом объяснят, как они программируются. А вдруг потом до тебя доходит, и начинаешь понимать, как думает компьютер». Сначала, еще в «бассейне», я не понимал, зачем мне эта malloc, зачем мне самому аллоцировать память, почему не изучаю Python и Javascript.
Но перед этим они должны пройти проверку на соответствие кода правилам школы с помощью программы Norminette. Норминейт. После успешной защиты все проекты загружают в местном аналоге GitHub.
Также проверяют на синтаксис. «Если код работает отлично, но есть утечка памяти, то проект считается проваленным. Ты должен все делать своими руками и очень аккуратно», — рассказывает Сергей. У нас есть список запрещенных функций, атрибутов, флагов, и их использование приравнивается к читерству.
Примеры заданий
Ниже приведены некоторые проекты, выполняемые самостоятельно и проверяемые по чек-листу: Все задания выполняемые студентами проверяются тремя способами: программно, по чек-листу другими студентами и представителями Бокала.
Init (System and Network Administration) — нужно на виртуальную машину установить операционную систему Debian и настроить ее согласно требованиям, указанным в задании.
Никаких сторонних библиотек, все своими руками. Libft — реализовать стандартные библиотечные функции на языке С, такие как: strcmp, atoi, strlen, memcpy, strstr, toupper, tolower
и др. Сам пишешь хедеры, сам реализовываешь, сам создаешь Makefile
, сам компилируешь.
Это довольно сложно для начинающих. Printf — необходимо полностью имплементировать стандартную функцию printf
со всеми ее аргументами на языке С.
На каждом новом шаге добавлялся новый тетрамино. Fillit — нужно было из подающегося на вход списка тетрамино собрать квадрат минимальной площади. Задание усложняется тем, что расчеты необходимо было делать на C и за минимальное время.
Можно и нужно использовать наработки из прошлых заданий. Libls — реализовать свою версию команды ls
со всеми ее стандартными флагами.
Rushes
В отличии от самостоятельных проектов, rush проверяется не студентами по чек-листу, а сотрудниками школы из Бокала. Помимо заданий, выполняемых в одиночку, существует отдельная категория заданий, которые выполняются группой студентов — rushes.
Pipex — программа на вход принимает названия файлов и произвольные shell-команды, студент должен продемонстрировать умение работать с пайпами на системном уровне и реализовать функционал, идентичный штатному поведению системы в терминале.
Сервер должен уметь поддерживать работу с несколькими клиентами и выводить на печать передаваемое клиентом сообщения с использованием системных сигналов SIGUSR1 и SIGUSR2. Minitalk — реализовать клиент-серверное приложение на языке C.
Клиент должен иметь возможность авторизовываться с помощью логина и пароля. Frozen — написать IRC-сервер на Golang, который способен работать с несколькими клиентами одновременно, используя concurrency и goroutines. IRC-сервер должен поддерживать множество каналов.
Заключение
Несмотря на то, что программа рассчитана на начинающих, простые задания быстро сменяются нетривиальными задачками, часто с нечеткими формулировками. Поступить в Школу 42 может любой, и для этого не нужно обладать специальными знаниями. Программа обучения не имеет строгой последовательности, поэтому каждый сам себе выбирает путь развития. От студента требуется максимальная самоотдача, умение искать недостающую информацию в официальной документации на английском языке, а также объединяться с другими студентам для выполнения заданий. Отсутствие сквозных рейтингов позволяют сконцентрироваться на своем прогрессе и развитии, а не сравнивать себя с другими.