My path at 42 São Paulo
Portfolio of projects completed during my time at 42 São Paulo.
42 São Paulo is an innovative educational institution that offers free software engineering training, using a unique peer-learning methodology based on practical projects. Without traditional teachers, the program is accessible 24/7 and lasts about 18 months, focusing on fundamental programming languages and advanced topics. The selection process includes an immersive phase called "Piscina", and the institution stands out for its high employability rate, with 85% of students entering the job market in the first year. Part of a global network with 35 campuses in 22 countries, 42 São Paulo prioritises diversity and inclusion, offering scholarships and developing not only technical skills but also essential competencies such as problem-solving and teamwork.
The Piscine is arguably the most crucial part of the 42 selection process, where we undertake a variety of projects.
Starting with shell scripting and progressively advancing to tasks using the C programming language.
-
The "Shell 00" project, part of the 42 school C programming curriculum, introduces students to Unix shell scripting. The exercises progressively cover fundamental concepts, such as file permissions, basic shell commands, and scripting practices. Tasks include creating specific file outputs, working with Git commands, manipulating file systems, and writing scripts to automate operations like cleaning temporary files or identifying ignored files in a repository. The project emphasises meticulous attention to detail and peer-based evaluations, ensuring collaborative learning and mastery of shell programming basics.
-
The "Shell 01" project from the 42 school focuses on advanced shell scripting skills. It consists of exercises that develop proficiency in Unix commands and scripting logic, such as listing user groups, finding and counting files, extracting MAC addresses, and manipulating text output. Students are also challenged with creative tasks, like creating files with specific names and performing arithmetic operations using custom numeral systems. The project emphasises careful problem-solving, strict syntax adherence, and collaboration among peers while reinforcing core shell scripting concepts.
-
The "C 00" project introduces foundational programming concepts in C, targeting beginners. The exercises focus on creating basic functions, such as printing characters, numbers, and combinations of digits, adhering to strict coding norms. Tasks include writing functions to display the alphabet in various orders, checking number signs, and generating formatted outputs like number combinations. The project uses the write function exclusively, ensuring a low-level understanding of output handling. It aims to instil discipline coding habits and a grasp of fundamental programming logic while encouraging collaborative learning and peer evaluation.
-
This set of exercises focuses on fundamental pointer and array manipulation concepts in C, aiming to strengthen students' understanding of pointer operations. Each task requires implementing a function without using external functions, except for the write function in the string display exercise. The exercises cover tasks such as assigning values to integers via pointers, swapping values between integers using pointers, performing mathematical operations (division and modulus) with results stored in pointers, handling strings including displaying and counting characters, and reversing and sorting integer arrays. Students are required to submit their code files as per the specifications of each exercise.
-
This set of exercises in the C 02 module of the 42 Piscine focuses on string manipulation and memory operations. It involves implementing custom versions of standard library functions (
strcpy
,strncpy
,strlcpy
) and utility functions to check string characteristics (e.g., whether strings contain only alphabetic, numeric, printable, uppercase, or lowercase characters). Other tasks include transforming strings (to uppercase, lowercase, or capitalising words), displaying non-printable characters in hexadecimal, and printing memory regions with a formatted representation.The exercises increase in difficulty and aim to strengthen understanding of C strings, pointers, and memory management. Students must adhere to strict coding norms verified by the Moulinette and should submit their work as specified to pass the automated tests.
-
This module in the 42 C Piscine focuses on advanced string manipulation using functions that replicate behaviours from the C standard library. The tasks progress in difficulty, covering comparisons, concatenation, substring searches, and string length management.
Students must follow strict norms and submit only the required files to pass the automated grading system, Moulinette. Adherence to these guidelines ensures the code compiles and functions correctly under specific compiler flags (
-Wall -Wextra -Werror
).
-
Module C 04 focuses on string and numeric operations in C, blending fundamental skills like counting characters and outputting strings with intermediate tasks such as converting numbers between bases. The exercises build progressively, emphasising input validation and error handling, particularly in base conversions. This approach ensures a strong foundation for practical applications, such as handling user inputs and custom numeric systems, while strict norms and compiler constraints reinforce good coding practices for real-world development.
Module C 04 provides a robust introduction to critical programming techniques in C, blending fundamental and intermediate concepts. By completing these exercises, students gain a deeper understanding of string and number manipulation, preparing them for more advanced challenges in subsequent modules.
-
Rush 00 introduces students to collaborative programming in C by tasking them with generating patterns of rectangular shapes using character-based designs. The project integrates essential concepts such as handling output with
write
, managing control structures like nested loops, and ensuring input validation for edge cases. Teams must carefully follow strict coding norms and adhere to guidelines for project delivery, fostering discipline in code organisation and error management.Rush 00 offers a hands-on introduction to teamwork and foundational programming skills in C. By tackling this project, students gain practical experience in structured coding, develop attention to detail, and prepare for more complex challenges in the 42 curriculum.
-
Rush 01 focuses on solving constrained logic puzzles in C, combining foundational skills like input validation and error handling with intermediate problem-solving techniques for grid-based challenges. The project requires students to implement a program that places numbers in a 4x4 grid based on visibility clues, ensuring unique values in rows and columns while satisfying the constraints. Emphasis is placed on efficient algorithms, dynamic memory management, and strict adherence to coding norms.
Rush 01 provides a comprehensive introduction to logical reasoning and advanced programming concepts in C. By completing this project, students strengthen their problem-solving skills, learn to manage complex inputs, and prepare for tackling more sophisticated challenges in future modules.
-
Rush 02 focuses on text and numeric processing in C, combining foundational tasks such as parsing inputs and outputting text with intermediate challenges like dynamically managing dictionaries and converting numbers to their textual representations. The exercises emphasise robust error handling, memory management, and adherence to dictionary formatting rules, ensuring a solid foundation for handling complex inputs and structured data.
Rush 02 offers a comprehensive introduction to key programming techniques in C, blending practical problem-solving with rigorous coding standards. By completing this project, students deepen their understanding of text processing, input validation, and dynamic memory usage, preparing them for more advanced challenges in subsequent modules.
The warm-up at 42 serves as a preparatory phase to revisit the essential programming fundamentals learned during the Piscine. These exercises cover topics such as loops, functions, pointers, and data structures, reinforcing both syntactical and semantic foundations of the C language.
Alongside technical skills, the warm-up introduces peer-to-peer evaluation, teaching effective communication, empathy, and collaboration, which are core values of the 42 learning methodology. This phase helps students gain confidence and readiness for the challenges of the 42 curriculum.
-
The P2P 101: Evaluation and Communication project, which prepares 42 students for peer evaluations. It introduces the concept of Nonviolent Communication (NVC) to resolve conflicts and foster empathy during evaluations. The project includes exercises on applying NVC principles and scenarios to develop communication and problem-solving skills. It also explains the evaluation process, with flowcharts and practical guidelines.
-
The Piscine Reloaded project, is a collection of exercises revisiting the fundamentals of programming in C. It covers topics such as loops, pointers, string manipulation, structures, and memory management. The goal is to reinforce the practical learning gained during the Piscine without reusing previous code. It includes specific submission rules and automated evaluation by the Moulinette, emphasising adherence to coding norms and practices.
-
The first milestone at 42 is represented by the project Libft, which serves as one of the initial significant challenges students face after completing the basecamp. The primary goal of this project is to create a custom static library in C by reimplementing several standard functions from the C library (libc). Students must write their own versions of these functions, using a Makefile to compile the code properly. This library will be used in future projects, as reliance on the original standard C library functions is prohibited in most 42 projects. Through this milestone, students not only reinforce their understanding of fundamental programming concepts but also learn how to structure and organise code in a way that adheres to strict guidelines, which will be crucial for their success in more advanced projects. Additionally, it introduces them to automated testing and correction systems used by 42, such as the Moulinette, which evaluates code against specific criteria.
-
The ft_printf project focuses on recreating the functionality of the standard C
printf()
function. It challenges participants to implement a custom version capable of handling various format specifiers, including%c
,%s
,%p
,%d
,%i
,%u
,%x
,%X
, and%%
. The goal is to develop a structured and efficient implementation that adheres to strict coding standards, ensuring memory safety and avoiding undefined behaviour. This exercise also introduces variadic functions, allowing the handling of a variable number of arguments, and offers an opportunity to enhance programming skills in C.In addition to the mandatory requirements, the project includes optional bonuses such as supporting flags (
-0.# +
) and field width specifications. However, these are only evaluated if the core implementation meets all requirements perfectly. Upon completion, the customft_printf()
can be added to the participant’s personal library (libft), making it a valuable tool for future C projects.
-
get_next_line
-
Born2beroot