A comprehensive portfolio documenting my journey through 42's project-based software engineering curriculum, from fundamental C programming to full-stack web applications.
About 42 β’ Curriculum β’ Projects β’ Skills β’ Statistics
- About 42
- Curriculum Structure
- The 42 Method
- Projects by Circle
- Skills Acquired
- Statistics
- Learning Approach
- Key Takeaways
42 is a global network of peer-to-peer coding schools that revolutionizes traditional education through project-based learning. Founded in Paris in 2013, 42 has expanded to 50+ campuses worldwide, training over 25,000 students without teachers, lectures, or tuition fees.
Peer-to-Peer Learning: No teachers, no classes. Students learn from each other through collaboration and code reviews.
Project-Based Curriculum: Over 150 practical projects organized in concentric circles, from basic C programming to specialized tracks.
24/7 Access: Campus open around the clock, allowing students to learn at their own pace and schedule.
Gamification: The curriculum is structured like a galaxy of interconnected projects, with levels, experience points, and achievements.
Learn to Learn: Focus on developing problem-solving skills and adaptability rather than memorizing syntax.
The Common Core is the mandatory first phase of 42's curriculum, designed to build foundational skills in:
- C Programming: Low-level programming, memory management, algorithms
- UNIX/Linux: Shell scripting, system administration, process management
- Networking: TCP/IP, client-server architecture, HTTP protocol
- Graphics: 2D/3D rendering, raycasting, mathematical projections
- Concurrency: Multithreading, synchronization, inter-process communication
- DevOps: Docker, containerization, orchestration
- Web Development: Full-stack development, databases, real-time communication
Duration: 12-18 months (average)
Objective: Reach level 7+ to unlock specializations and internships
The 42 curriculum is organized in concentric circles (ranks), with each circle representing increasing complexity and specialization.
ββββββββββββββββββββ
β Circle 06 β
β ft_transcendence β
ββββββββββ¬ββββββββββ
β
ββββββββββββββββΌβββββββββ
β Circle 05 β
β Inception β’ Webserv β
β CPP Modules 05-09 β
ββββββββββββ¬βββββββββββββ
β
ββββββββββββββββΌβββββββββ
β Circle 04 β
β Cub3D β’ NetPractice |
β CPP Modules 05-09 |
ββββββββββββ¬βββββββββββββ
β
ββββββββββββββββΌββββββββββββββ
β Circle 03 β
β Philosophers β’ Minishell β
ββββββββββββ¬ββββββββββββββββββ
β
ββββββββββββββββββββΌβββββββββββββ
β Circle 02 β
β Push_swap β’ Minitalk β’ FdF β
ββββββββββββ¬βββββββββββββββββββββ
β
ββββββββββββββββΌβββββββββββββββ
β Circle 01 β
β ft_printf β’ get_next_line β
β Born2beRoot β
ββββββββββββ¬βββββββββββββββββββ
β
ββββββββΌβββββββ
β Circle 00 β
β Libft β
βββββββββββββββ
Circle 00 (Foundation)
β C fundamentals, memory management, string manipulation
Circle 01 (Basics)
β Variadic functions, file descriptors, system administration
Circle 02 (Algorithms & Systems)
β Sorting algorithms, IPC, graphics, virtual machines
Circle 03 (Concurrency & OOP)
β Multithreading, shell implementation, C++ fundamentals
Circle 04 (3D & Networking)
β Raycasting, TCP/IP, network configuration
Circle 05 (DevOps & Backend)
β Docker infrastructure, HTTP servers, advanced C++
Circle 06 (Full-Stack)
β Web applications, real-time communication, databases
Students evaluate each other's work through peer evaluations. This process:
- Encourages knowledge sharing and teaching
- Develops communication and code review skills
- Builds a collaborative community
- Provides multiple perspectives on solutions
Every project solves real-world problems:
- Practical application of concepts
- Immediate feedback through testing
- No theoretical exams or lectures
- Learning by doing, not memorizing
The curriculum uses game mechanics:
- Levels: Progress from 0 to 7+ (and beyond)
- Experience Points: Gain XP by completing projects
- Achievements: Unlock badges and milestones
- Holy Graph: Visual representation of the curriculum galaxy
Students are self-directed:
- Choose when to start projects (with prerequisites met)
- Select from multiple project options at certain ranks
- Decide their own schedule (campus open 24/7)
- Learn to manage time and prioritize tasks
|
Your first C library Skills:
Functions: 43 functions (34 mandatory + 9 bonus) |
|
Recreate printf() Skills:
Conversions: 9 types |
Read line by line Skills:
Bonus: Multi-FD support |
System administration Skills:
OS: Debian |
|
Sorting algorithm Skills:
Operations: <700 (500 numbers) |
Client-server communication Skills:
Signals: SIGUSR1, SIGUSR2 |
3D wireframe viewer Skills:
Algorithm: Bresenham |
|
Dining philosophers problem Skills:
Concepts: Threads, mutexes, timing |
Bash-like shell implementation Skills:
Team: 2 developers |
|
Raycasting 3D game Skills:
Team: 2 developers |
TCP/IP networking Skills:
Levels: 10 levels |
C++ fundamentals Skills:
Modules: 5 modules |
|
Docker infrastructure Skills:
Services: 3 containers |
HTTP/1.1 server Skills:
Team: 3 developers |
Advanced C++ Skills:
Modules: 5 modules |
|
Surprise. Skills:
Stack: Django, Angular, PostgreSQL, Redis, Elasticsearch, Logstash, Kibana, Prometheus, Grafana Team: 5 developers |
|
Mastered:
|
Proficient:
|
|
|
|
|
|
|
- Version Control: Git workflows, branching strategies, code reviews
- Collaboration: Pair programming, team projects, peer evaluation
- Testing: Unit testing, integration testing, stress testing
- Debugging: GDB, Valgrind, lldb, systematic debugging
- Documentation: Technical writing, README files, code comments
- Project Management: Task prioritization, deadline management, Agile basics
Total Projects: 16 completed
Average Score: 106/100
Bonus Projects: 8/16 (50%)
Team Projects: 5/16 (31%)
Individual Projects: 11/16 (69%)
Common Core Duration: ~18 months
Total Hours: ~2,000+ hours
Projects Evaluated: 100+ peer evaluations
Code Written: 50,000+ lines of code
C/C++: 45% (~22,500 lines)
Shell: 15% (~7,500 lines)
Python: 10% (~5,000 lines)
Config: 10% (~5,000 lines)
JavaScript: 10% (~5,000 lines)
Other: 10% (~5,000 lines)
- Individual: Libft, ft_printf, get_next_line, Born2beRoot, Push_swap, Minitalk, FdF, Philosophers, CPP Modules, NetPractice, Inception
- Team (2): Minishell, Cub3D
- Team (3): Webserv, ft_transcendence
Documentation: Official docs, RFCs, man pages, standards
Resources: Books, online tutorials, GitHub repos, Stack Overflow
Experimentation: Trial and error, testing hypotheses, iterative improvement
Peer Learning: Discussions, whiteboard sessions, code reviews
Pair Programming: Real-time collaboration on complex problems
Knowledge Sharing: Teaching concepts to solidify understanding
- Understand: Read project requirements, identify constraints
- Research: Study relevant concepts, algorithms, APIs
- Plan: Design architecture, break down into subtasks
- Implement: Write code incrementally, test frequently
- Debug: Use tools (GDB, Valgrind), systematic troubleshooting
- Optimize: Refactor, improve performance, clean up
- Document: Write README, comment code, explain design choices
- Evaluate: Peer evaluation, receive feedback, iterate
- Low-Level Understanding: Deep knowledge of memory management, pointers, and system architecture
- Algorithmic Thinking: Ability to design efficient algorithms and analyze complexity
- System Design: Experience building complex systems from scratch (shells, servers, games)
- Full-Stack Capability: Skills spanning from low-level C to high-level web frameworks
- Tool Mastery: Proficiency with GDB, Valgrind, Git, Docker, and development tools
- Autonomy: Self-directed learning, resourcefulness, initiative
- Collaboration: Teamwork, communication, conflict resolution
- Adaptability: Learning new technologies quickly, embracing challenges
- Persistence: Debugging for hours, overcoming obstacles, never giving up
- Peer Evaluation: Giving and receiving constructive feedback
- Code Quality: Writing clean, maintainable, well-documented code
- Testing: Comprehensive testing, edge cases, error handling
- Security: Awareness of vulnerabilities, defensive programming
- Performance: Optimization techniques, profiling, benchmarking
- Continuous Learning: Staying updated, exploring new technologies
- 42 Network - Official 42 network website
- 42 Pedagogy - Understanding the 42 method
- Intra 42 - Student platform and project resources
C Programming:
- "The C Programming Language" by Kernighan & Ritchie
- "Expert C Programming: Deep C Secrets" by Peter van der Linden
- "C Interfaces and Implementations" by David R. Hanson
UNIX/Linux:
- "Advanced Programming in the UNIX Environment" by W. Richard Stevens
- "The Linux Programming Interface" by Michael Kerrisk
- "UNIX Network Programming" by W. Richard Stevens
Algorithms:
- "Introduction to Algorithms" by CLRS
- "Algorithms" by Robert Sedgewick and Kevin Wayne
- "The Algorithm Design Manual" by Steven Skiena
System Design:
- "Operating Systems: Three Easy Pieces" by Remzi H. Arpaci-Dusseau
- "Computer Systems: A Programmer's Perspective" by Bryant & O'Hallaron
- "Designing Data-Intensive Applications" by Martin Kleppmann
- 42 Students Slack - Global community
- GitHub 42 Network - Student repositories
- Stack Overflow - Q&A
Journey Complete π
From zero to software engineer through peer learning, practical projects, and relentless problem-solving.
42 Urduliz | 2023-2025
βοΈ From Z3n42 | Made with β and countless debugging sessions