As I visited the legendary School 42: "pool", cats and the Internet instead of teachers. Part 2
In the last post I started the story about School 42, which is famous for its revolutionary system of education: there are no teachers, students themselves check each other's work, you do not need to pay for studies. In this post, I’ll talk more about the training system and what tasks students perform.
There are no teachers, there is the Internet and comrades. Education at school is based on the principles of joint project work - peer-to-peer learning. Students do not study any textbooks; they do not give lectures to them. School organizers believe that everything can be found on the Internet, ask friends or more experienced students with whom you are working on a project.
Completed tasks are checked 3-4 times by other students, so everyone can be both a student and a mentor. There are no ratings either - you just need to complete the task correctly and completely. Even if it is done 90%, it will be counted as a failure.
No ratings, there are points. To put the project to check, you must have a certain number of points - correction points. Points are earned by checking the homework of other students. And this is an additional growth factor - you have to understand a variety of tasks, sometimes exceeding your level of knowledge.
“Some projects are a real cosmos, the brain explodes from them. And then, to earn only one correction point, you have to sweat all day, understanding the code. Once I was lucky, and I received as much as 4 points in a day - this is a rare success , ”says my friend, student Sergei.
Sit out in the corner will not work. Projects are carried out both alone and in pairs, and in larger groups. They are always protected in person, it is important that all members of the group take an active part, and that everyone understands the code and is highly motivated. Silence and sit aside here does not work. In this way, the school pumps out teamwork and successful communication skills. And besides, all students get to know each other and communicate with each other, which is very useful for networking and future careers.
Gamification As in a computer game, students move up the levels and monitor their progress with the help of the Holy Graph - a “holy” card, which clearly shows the entire path traveled and upcoming. As in the RPG "experience" is accrued for projects, and after accumulating a certain amount of it, a transition to a new level is made. The similarity with the real game also lies in the fact that each new level is more complicated than the previous one, there are more and more tasks.
Glass and Adm. The school has two main divisions - Bokal (technicians) and Adm (administration). Glass - deals with technical issues and the pedagogical component, while Adm - with administrative and organizational issues. The staff reserve of Glass / Adm is replenished at the expense of the students who are interns at the School.
How and what is taught here
It all starts with "C". The school uses only Unix, considering Windows is not the best choice. The code is taught from the very basics, forcing to comprehend the very logic of programming. The first few levels, all projects are carried out only in C and C ++, the IDE is not used. Students use the gcc compiler and the vim text editor.
Normineut. After successful protection, all projects are uploaded to the local GitHub counterpart. But before that, they must pass a code compliance check with the Norminette program.
“If the code works fine, but there is a memory leak, then the project is considered failed. Also checked for syntax. We have a list of prohibited functions, attributes, flags, and their use is equivalent to cheating. You have to do everything with your own hands and very carefully , ”says Sergey.
Examples of tasks
All tasks performed by students are checked in three ways: programmatically, by check list by other students and representatives of the Glass. Below are some projects that are carried out independently and are checked according to a check list:
Init (System and Network Administration) - you need to install the Debian operating system on the virtual machine and configure it according to the requirements specified in the task.
Libft - implement standard library functions in C, such as:
strcmp, atoi, strlen, memcpy, strstr, toupper, tolowerand others. No third-party libraries, all with your own hands. You write headers yourself, you implement it yourself, you create it yourself, you
Makefilecompile it yourself.
Printf - it is necessary to fully implement the standard function
printfwith all its arguments in C. This is quite difficult for beginners.
Fillit - it was necessary to collect a square of the minimum area from the list of tetramino coming to the entrance. At each new step, a new tetramino was added. The task is complicated by the fact that the calculations had to be done in C and for the minimum time.
Libls - implement your version of the team
lswith all its standard flags. You can and should use the achievements from past tasks.
In addition to the tasks performed alone, there is a separate category of tasks that are performed by a group of students - rushes. Unlike independent projects, rush is not checked by students on a check list, but by school staff from Bokal.
Pipex - the input program accepts file names and arbitrary shell commands, the student must demonstrate the ability to work with pipes at the system level and implement a functionality identical to the regular behavior of the system in the terminal.
Minitalk - implement a client-server application in C. The server must be able to support multiple clients and print messages sent by the client using the system signals SIGUSR1 and SIGUSR2.
Frozen - write an IRC server in Golang, which is able to work with several clients at the same time, using concurrency and goroutines. The client should be able to log in using a username and password. An IRC server must support multiple channels.
Anyone can enter School 42, and you do not need to have special knowledge to do this. Despite the fact that the program is designed for beginners, simple tasks are quickly replaced by non-trivial tasks, often with fuzzy formulations. The student is required to give maximum dedication, the ability to look for the missing information in the official documentation in English, and also unite with other students to complete assignments. The training program does not have a strict sequence, so everyone chooses a development path for himself. The absence of end-to-end ratings allows you to concentrate on your progress and development, and not to compare yourself with others.