В прошлом посте я начал рассказ про Школу 42, которая славится своей революционной системой обучения: там нет учителей, студенты сами проверяют друг у друга работы, платить за учебу не нужно. В этом посте я подробнее расскажу про систему обучения и про то, какие задания выполняют студенты.
Нет учителей, есть интернет и товарищи. Обучение в школе основано на принципах совместной проектной работы — peer-to-peer learning. Никаких учебников студенты не штудируют, лекций им не читают. Организаторы школы считают, что все можно найти в интернете, спросить у друзей или у более опытных студентов, с которыми вы вместе работаете над проектом.
Выполненные задания 3-4 раза проверяют другие студенты, таким образом, каждый может побыть и учеником, и ментором. Оценок тоже нет — просто нужно выполнить задачу правильно и полностью. Даже если она сделана на 90 %, это будет засчитано как провал.
Нет оценок, есть баллы. Чтобы выставить проект на проверку, необходимо иметь определенное количество баллов — correction points. Баллы зарабатывают проверкой домашнего задания других учеников. И это дополнительный фактор роста – ведь приходится разбираться в самых разных задачах, иногда превосходящих ваш уровень знаний.
«Некоторые проекты — это настоящий космос, от них взрывается
Отсидеться в углу не выйдет. Проекты выполняются как в одиночку и парами, так и более крупными группами. Защищают их всегда лично, при этом важно, чтобы активное участие принимали все члены группы, и чтобы каждый понимал код и был высоко мотивирован. Отмолчаться и отсидеться в стороне здесь не получается. Таким образом, школа прокачивает навыки групповой работы и успешной коммуникации. А кроме того, все ученики знакомятся и общаются друг с другом, что очень полезно для нетворкинга и будущей карьеры.
Геймификация. Как в компьютерной игре, студенты движутся вверх по уровням и следят за своими успехами с помощью 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 может любой, и для этого не нужно обладать специальными знаниями. Несмотря на то, что программа рассчитана на начинающих, простые задания быстро сменяются нетривиальными задачками, часто с нечеткими формулировками. От студента требуется максимальная самоотдача, умение искать недостающую информацию в официальной документации на английском языке, а также объединяться с другими студентам для выполнения заданий. Программа обучения не имеет строгой последовательности, поэтому каждый сам себе выбирает путь развития. Отсутствие сквозных рейтингов позволяют сконцентрироваться на своем прогрессе и развитии, а не сравнивать себя с другими.
Автор: Юрий Жайворонок