Mail.ru Group corporate blog
Programming
Studying in IT
Education abroad
IT career
May 30

Как я побывал в легендарной Школе 42: «бассейн», котики и интернет вместо учителей. Часть 2


В прошлом посте я начал рассказ про Школу 42, которая славится своей революционной системой обучения: там нет учителей, студенты сами проверяют друг у друга работы, платить за учебу не нужно. В этом посте я подробнее расскажу про систему обучения и про то, какие задания выполняют студенты.


Нет учителей, есть интернет и товарищи. Обучение в школе основано на принципах совместной проектной работы — peer-to-peer learning. Никаких учебников студенты не штудируют, лекций им не читают. Организаторы школы считают, что все можно найти в интернете, спросить у друзей или у более опытных студентов, с которыми вы вместе работаете над проектом.


Выполненные задания 3-4 раза проверяют другие студенты, таким образом, каждый может побыть и учеником, и ментором. Оценок тоже нет — просто нужно выполнить задачу правильно и полностью. Даже если она сделана на 90 %, это будет засчитано как провал.


Нет оценок, есть баллы. Чтобы выставить проект на проверку, необходимо иметь определенное количество баллов — correction points. Баллы зарабатывают проверкой домашнего задания других учеников. И это дополнительный фактор роста – ведь приходится разбираться в самых разных задачах, иногда превосходящих ваш уровень знаний.


«Некоторые проекты — это настоящий космос, от них взрывается мозг. И тогда, чтобы заработать всего один correction point, приходится потеть весь день, разбираясь в коде. Однажды мне повезло, и я получил за день целых 4 балла — это редкая удача», — рассказывает мой знакомый, студент Сергей.


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


Геймификация. Как в компьютерной игре, студенты движутся вверх по уровням и следят за своими успехами с помощью Holy Graph — «святой» карты, где наглядно показан весь пройденный и предстоящий путь. Как в RPG за проекты начисляется "опыт", и после накопления определенного его количества совершается переход на новый уровень. Схожесть с настоящей игрой еще и в том, что каждый новый уровень сложнее предыдущего, заданий становится все больше.



Бокал и Адм. В школе существует два основных подразделения — Бокал (технари) и Адм (администрация). Бокал — занимается техническими вопросами и педагогической составляющей, в то время как Адм — административными и организационными вопросами. Кадровый резерв Бокала/Адм пополняются за счет самих студентов, проходящих стажировку в Школе.


Как и чему здесь учат


Все начинается с «С». В школе пользуются исключительно Unix, считая Windows не лучшим выбором. Коду учат с самых основ, заставляя постигать саму логику программирования. Несколько первых уровней все проекты выполняются только на языках C и C++, IDE не применяются. Студенты используют компилятор gcc и текстовый редактор vim.


«На других курсах тебе дадут функции, попросят выполнить проект, и только потом объяснят, как они программируются. Здесь ты не можешь пользоваться функцией, пока не напишешь ее сам. Сначала, еще в «бассейне», я не понимал, зачем мне эта malloc, зачем мне самому аллоцировать память, почему не изучаю Python и Javascript. А вдруг потом до тебя доходит, и начинаешь понимать, как думает компьютер».


Норминейт. После успешной защиты все проекты загружают в местном аналоге GitHub. Но перед этим они должны пройти проверку на соответствие кода правилам школы с помощью программы Norminette.


«Если код работает отлично, но есть утечка памяти, то проект считается проваленным. Также проверяют на синтаксис. У нас есть список запрещенных функций, атрибутов, флагов, и их использование приравнивается к читерству. Ты должен все делать своими руками и очень аккуратно», — рассказывает Сергей.



Примеры заданий


Все задания выполняемые студентами проверяются тремя способами: программно, по чек-листу другими студентами и представителями Бокала. Ниже приведены некоторые проекты, выполняемые самостоятельно и проверяемые по чек-листу:


Init (System and Network Administration) — нужно на виртуальную машину установить операционную систему Debian и настроить ее согласно требованиям, указанным в задании.


Libft — реализовать стандартные библиотечные функции на языке С, такие как: strcmp, atoi, strlen, memcpy, strstr, toupper, tolower и др. Никаких сторонних библиотек, все своими руками. Сам пишешь хедеры, сам реализовываешь, сам создаешь Makefile, сам компилируешь.


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


Fillit — нужно было из подающегося на вход списка тетрамино собрать квадрат минимальной площади. На каждом новом шаге добавлялся новый тетрамино. Задание усложняется тем, что расчеты необходимо было делать на C и за минимальное время.


Libls — реализовать свою версию команды ls со всеми ее стандартными флагами. Можно и нужно использовать наработки из прошлых заданий.


Rushes


Помимо заданий, выполняемых в одиночку, существует отдельная категория заданий, которые выполняются группой студентов — rushes. В отличии от самостоятельных проектов, rush проверяется не студентами по чек-листу, а сотрудниками школы из Бокала.


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


Minitalk — реализовать клиент-серверное приложение на языке C. Сервер должен уметь поддерживать работу с несколькими клиентами и выводить на печать передаваемое клиентом сообщения с использованием системных сигналов SIGUSR1 и SIGUSR2.


Frozen — написать IRC-сервер на Golang, который способен работать с несколькими клиентами одновременно, используя concurrency и goroutines. Клиент должен иметь возможность авторизовываться с помощью логина и пароля. IRC-сервер должен поддерживать множество каналов.


Заключение


Поступить в Школу 42 может любой, и для этого не нужно обладать специальными знаниями. Несмотря на то, что программа рассчитана на начинающих, простые задания быстро сменяются нетривиальными задачками, часто с нечеткими формулировками. От студента требуется максимальная самоотдача, умение искать недостающую информацию в официальной документации на английском языке, а также объединяться с другими студентам для выполнения заданий. Программа обучения не имеет строгой последовательности, поэтому каждый сам себе выбирает путь развития. Отсутствие сквозных рейтингов позволяют сконцентрироваться на своем прогрессе и развитии, а не сравнивать себя с другими.

+37
11.6k 45
Comments 21
Top of the day