As you may know, 42 School resolves around projects instead of classes with professors. It's the same during the Piscine, and the pisciners are insinde the school for a month where they need to complete projects and take exams under the school's pedagogy. At the end of the Piscine, the Bocal (Staff) will send the result of the admission to everybody at the same time within 2 weeks.
During the Piscine, I pushed almost everything I did in this repository when I pushed in 42's repos at the same time with some custom scripts (check out /scripts).
For your Piscine, I would recommend the improved intra browser extension to add features on the intra, like a custom background on your profile.
I'd recommend also these extensions for VS Code if you use it:
Cheating is obviously forbidden, and you shouldn't use this repo to copy-paste any code for your Piscine. (Note that even if you don't use the code, and only look at this README, it could be taken as cheating and I don't recommend you to use this repo at all during your Piscine)
I finished with C 09 completed (average around C 07-08), pretty good scores on the exams, not on the Rushes but it's the hardest so it's okay, and a nice working BSQ but with some 'eliminating' errors so a low score (same as 90% of groups).
On the Holy Graph:
Finished with a level 9 (average around 7-8).
I spent a total of 183 hours on 42's computers, with an average of 50 hours per week.
I was quite happy with my results but unfortunately I was not admitted into the school after this Piscine, despite having good scores on the projects, I was probably not involved enough on the social side.
Projects are the main thing in the piscine. There is firstly 2 Shell projects to learn the basics of terminal commmands to navigate on the computers, and then the main 14 C projects.
Every projects need to have a grade of 50 or greater to validated. To evaluate a project, you first need to do 2 peer-to-peer evaluations with other pisciners, and then the Moulinette, a program, will run tests on your code. Your code need to sitck to the Norm, tested by the Norminette (available with norminette command on all 42's computers, or on this repo), as well as all the rules on the subject (read again the subject before closing, I did the error a few times). When the Moulinette is evaluating, if an exercise doesn't work, every next exercise, even when right, doesn't count. After each Moulinette passage, you can find a trace in your emails that can be (sometimes) useful when debugging.
You can find here all my projects and results, as well as all Moulinette's results, details of what should be wrong, and a link to the the commit of the try.
| Grade | Moulinette | Notes | Submit commit | |
|---|---|---|---|---|
| First try | ![]() |
|
|
<b8232d3> |
| Retry 1 | ![]() |
|
|
<b48c470> |
Basic shell commands to understand how the computer and files work, and learning to navigate them only via terminal.
| Grade | Moulinette | Notes | Submit commit | |
|---|---|---|---|---|
| First try | ![]() |
|
|
<5e9358a> |
Harder shell commands and scripts that can be quite complex.
| Grade | Moulinette | Notes | Submit commit | |
|---|---|---|---|---|
| First try | ![]() |
|
Ex06 and 07 fixed in <main>, not tested |
<5d84fe9> |
To learn the basics of C languague, mainly with the write function (unistd.h), chars and ints.
| Grade | Moulinette | Notes | Submit commit | |
|---|---|---|---|---|
| First try | ![]() |
|
Perfect Notes: tests in ex08 are wrong but are working, fixed in <main> |
<7d80b5a> |
The first time we use pointers and learn about them.
| Grade | Moulinette | Notes | Submit commit | |
|---|---|---|---|---|
| First try | ![]() |
|
|
<7b869bb> |
| Retry 1 | ![]() |
|
|
<885529a> |
| Retry 2 | ![]() |
|
|
<7f059f4> |
Basic string manipulation with copy or detection of certain types of characters. Lot of copy-paste. Understanding the functions that we need to copy is hard at first, and you should really pay attention to everything in the subject and the man.
| Grade | Moulinette | Notes | Submit commit | |
|---|---|---|---|---|
| First try | ![]() |
|
|
<20565f8> |
| Retry 1 | ![]() |
|
|
<6ce8546> |
More advanced string manipulation but many times the same function with only some slight variations.
| Grade | Moulinette | Notes | Submit commit | |
|---|---|---|---|---|
| First try | ![]() |
|
|
<4ab1050> |
| Retry 1 | ![]() |
|
|
<758e64d> |
String to int, int to string and base manipulation.
| Grade | Moulinette | Notes | Submit commit | |
|---|---|---|---|---|
| First try | ![]() |
|
|
<55199b0> |
| Retry 1 | ![]() |
|
Perfect | <298c26b> |
Learn the difference between iterative and recursive functions, and use them. Ex08: See The Ten Queens Puzzle
| Grade | Moulinette | Notes | Submit commit | |
|---|---|---|---|---|
| First try | ![]() |
|
|
<73ee320> |
Start to make programs instead of functions, and use arguments on main function.
| Grade | Moulinette | Notes | Submit commit | |
|---|---|---|---|---|
| First try | ![]() |
|
|
<aee357b> |
| Retry 1 | ![]() |
|
|
<26e26fd> |
| Retry 2 | ![]() |
|
Perfect | <a38ab93> |
Learn how to use tha malloc and free functions to allocate memory.
| Grade | Moulinette | Notes | Submit commit | |
|---|---|---|---|---|
| First try | ![]() |
|
<2c2455a> |
Use header files (.h) and structures struct + typedef.
| Grade | Moulinette | Notes | Submit commit | |
|---|---|---|---|---|
| First try | ![]() |
|
Everything worked great but I didn't know about the Norm in Makefiles, the 'output' file variable should be names NAME instead of EXE | <b057384> |
| Retry 1 | ![]() |
|
Perfect | <1703533> |
Learn about advanced compiling and Makefiles.
| Grade | Submit commit |
|---|---|
![]() |
<d5db5bb> |
*With yriffard
The BSQ is the last project of the piscine. It consists of using almost everythings we learned during the month.
You should at least know (not necessarily validated) the notions up to C10.
In this project, you need to find the Biggest SQuare on a map from a file, where this map has empty places and obsacles.
You should be able to handle errors on the map if it doesn't follow the rules, handle multiple maps on the same run if
there is multiple inputs (C06), make sure there are no memory leak (C07), have a working Makefile (C09) and many others
notions.
Errors we know about:
- In case of map error, everything is not freed correctly.
- With stdin:
- Should work with a
./bsq < [map_file]orcat [map_file] | ./bsqcommand (not stated by the subject) - We use duplicates that we forgot to free
- If the map doesn't start at the first input lines, it won't work
- Errors are not handled
- Parsing works but doesn't return a map error if needed
- (Buffer has a size limit of 1024)
- Should work with a
Moulinette:
basic_tests: One parameter KO | functional_tests: Test 1 KO
Details:
One parameterKOed because we separate each argument with a new line for lisibility, as it's how we understood the subject.functional_tests: Test 1is probably the standard input.
Evaluations:
"Tres bien ! Tout est parfait, bonne gestion des erreurs ! Attention le code n'est pas des plus opti mais ca devrait suffir ! Le 10kx10k tourne en 40s c'est bien je pense ! Code facile clair et explications aussi ! Le code est solide aucun de mes tests ne l'a fait flancher ! Bonne chance et bon courage pour l'exam demain !!! ;D Canine" (100%) - hbretagn
"Un très bon projet, bien organisé et réparti. Le code est propre et très bien expliqué, et tout semble fonctionnel, aurait pu mériter un 100. Dommage pour la mauvaise compréhension de l'entrée standard qui peut prêter à confusion dans le sujet (prends dans l'entrée si on lui donne le contenu du fichier et non le fichier en lui-même comme dit dans la correction). bravo a vous et bon courage pour la fin de piscine et l'examen." (0%) - clemmart
"C est un super projet, vous vous etes tres bien organisé et repartis le travail comme le prouve le git log, vous avez su m expliquer votre code, un code qui est d ailleurs tres clair et modulaire. Votre gestion des erreurs est tres solide, dommage pour l entree standard, le pdf n etait pas clair sur le sujet. Bonne continuation et pour courage pour l exam final !!" (0%) - mberthai
Exams are, as you can guess, exams. They take place for 4 hours, the Fridays from 4PM to 8PM. You are free to finish whenever you want.
During the exam, you are alone on the computer, you cannot use the internet, your previous projects nor speak with the others. You can have a blank paper and a pen to take notes.
Even though you can use whatever text editor/IDE you want on the projects, in exam, you can only use the Terminal, Vim, Emacs & Nano, so be sure to remember everything you think will be useful, or at least know where to search.
First exam at the end of the first week. Should be relatively easy and revolves mainly around the write function in C and the notions in C00 and C01.
As I not enough prepared, I completely froze on the first exercise, it was really easy, just print a character with the write function, but I didn't know the name of the library to include (unistd.h), and after two hours of tries and labor, I finally abandonned, that resulted in this grade (yes it's considered as a success anyway for whatever reason):
Projects notions: shell00, c00-01/02?
![]() |
|---|
Mainly about string manipulation, still the write function and arguments in the main function (argc, argv).
Was pretty easy even tough not everyone went to c06 at the time, so plenty of people din't know how to handle arguments.
Projects notions: exam00, c02-c06
![]() |
|---|
Same as exam01 but with malloc too.
Took more time on some exercises and didn't have time to finish the last one. My code worked great except in one particular case but I couldn't fix it in time.
Projects notions: exam01, c07
![]() |
|---|
Rushs are projects in randomly generated groups, where you need to work in cooperation to complete your subject.
There will be only one correction, not by other pisciners but by members of the staff, and every member of the group should know how to explain the program clearly, as it will be graded "in particular on the group's least solid explanations".
| Grade | Notes | Submit commit |
|---|---|---|
![]() |
Everything worked great but we got flagged for the Norm because of the commented main test function in ft_putchar.c (only copy-pasted it from C 00). |
<73badae> |
Evaluation
"Projet fonctionnel avec tous les sujets (bonus) fait. Le code est pas mal, avec des bonnes idees! Quelques petits points d'ameliorations pas tres importants auraient pu etre applique mais rien de tres ouf. Attention a la norme, lisez le pdf, la norminette ne check pas tout! Bon courrage pour la suite!" - lcottet
[Project description here]
| Grade | Notes | Submit commit |
|---|---|---|
![]() |
We didn't finish the project and a lot of things were wrongly done, we didn't expect more. | <2cb6ec8> |
Evaluation
"Début de projets : plein d’idées, une bonne logique de backtrak et de récursivité, les explications sont bien faites, à part ça rien à redire.
Problèmes : malloc mal sécurisé/inutile, la remontée d’erreur peut etre meilleur , utilisation de variables globales inutiles, lire la norme, les commits en français, le programme alloue avant de checker le parsing, pas mal de bouts de scotch (chiffres « magique »), mais une bonne résilience, vous avez essayé jusqu’au bout. Bon courage pour la piscine !" - pnaessen
https://www.puzzle-skyscrapers.com [Project description here]
| Grade | Notes | Submit commit |
|---|---|---|
![]() |
Almost everything worked great but we didn't have time to fuse our work and norm it correclty. | <d2ecdbc> |
Evaluation
"Très bon groupe, un bon début de projet qui fonctionne avec 3 chiffres. Les nouvelles notions sont comprises : makefile, open, close, fd. Malheureusement, quelques petits soucis : malloc pas forcément sécurisé, open aussi, des soucis de norm. Mais sinon, l'idée de l'algo était très bonne, tout le monde a bien travaillé dessus. Avec une journée de plus, cela aurait pu être validé. Oubliez le PHONY + relink. Bonne chance pour la fin de piscine !" - pnaessen
[Project description here]













