Skip to content

Z3n42/Common-Core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 

Repository files navigation

🌌 42 Urduliz - Common Core

Software Engineering Curriculum Journey

Common Core Projects Level 42 Urduliz

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


πŸ“š Table of Contents


πŸŽ“ About 42

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.

What Makes 42 Unique

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

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


πŸ—οΈ Curriculum Structure

The 42 curriculum is organized in concentric circles (ranks), with each circle representing increasing complexity and specialization.

Inner Circle (Common Core)

                               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                               β”‚    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    β”‚
         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Progression Path

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


🎯 The 42 Method

1. Peer Learning

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

2. Project-Based Learning

Every project solves real-world problems:

  • Practical application of concepts
  • Immediate feedback through testing
  • No theoretical exams or lectures
  • Learning by doing, not memorizing

3. Gamification

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

4. Autonomy

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

πŸ“ Projects by Circle

Circle 00 | Foundation

Your first C library

Skills:

  • String manipulation
  • Memory allocation
  • Linked lists
  • Makefile compilation

Functions: 43 functions (34 mandatory + 9 bonus)


Circle 01 | Basics

Recreate printf()

Skills:

  • Variadic functions
  • Format specifiers
  • Type conversions
  • Output formatting

Conversions: 9 types

Read line by line

Skills:

  • File descriptors
  • Static variables
  • Buffer management
  • Multiple FDs

Bonus: Multi-FD support

System administration

Skills:

  • Virtual machines
  • Linux administration
  • Security policies
  • Shell scripting

OS: Debian


Circle 02 | Algorithms & Systems

Sorting algorithm

Skills:

  • Algorithm design
  • Complexity analysis
  • Stack operations
  • Optimization

Operations: <700 (500 numbers)

Client-server communication

Skills:

  • UNIX signals
  • Bit manipulation
  • IPC
  • Process communication

Signals: SIGUSR1, SIGUSR2

3D wireframe viewer

Skills:

  • Graphics programming
  • Isometric projection
  • Matrix transformations
  • MinilibX

Algorithm: Bresenham


Circle 03 | Concurrency

Dining philosophers problem

Skills:

  • Multithreading
  • Mutex synchronization
  • Deadlock prevention
  • Race condition handling

Concepts: Threads, mutexes, timing

Bash-like shell implementation

Skills:

  • Process management
  • Pipe & redirection
  • Signal handling
  • Environment variables

Team: 2 developers


Circle 04 | 3D & Networking & OOP

Raycasting 3D game

Skills:

  • Raycasting
  • Texture mapping
  • Game development
  • Performance optimization

Team: 2 developers

TCP/IP networking

Skills:

  • IP addressing
  • Subnetting
  • Routing
  • Network architecture

Levels: 10 levels

C++ fundamentals

Skills:

  • OOP principles
  • Orthodox Canonical Form
  • Operator overloading
  • Templates (basics)

Modules: 5 modules


Circle 05 | DevOps & Backend

Docker infrastructure

Skills:

  • Docker & Docker Compose
  • Container orchestration
  • TLS/SSL configuration
  • System administration

Services: 3 containers

HTTP/1.1 server

Skills:

  • HTTP protocol
  • Non-blocking I/O
  • CGI execution
  • Event-driven architecture

Team: 3 developers

Advanced C++

Skills:

  • Exceptions
  • Templates & STL
  • Algorithms
  • Containers

Modules: 5 modules


Circle 06 | Full-Stack

Surprise.
Real-time multiplayer Pong platform

Skills:

  • Django REST API + Channels
  • Angular 17 frontend
  • WebSocket communication
  • Docker orchestration (16 services)
  • PostgreSQL + Redis
  • ELK Stack observability
  • Prometheus + Grafana metrics

Stack: Django, Angular, PostgreSQL, Redis, Elasticsearch, Logstash, Kibana, Prometheus, Grafana

Team: 5 developers


πŸ’‘ Skills Acquired

Programming Languages

Mastered:

  • C (C99, C11): Memory management, pointers, data structures
  • C++98: OOP, templates, STL, exceptions
  • Shell/Bash: Scripting, automation, system administration
  • Makefile: Build automation, dependency management

Proficient:

  • Python: Scripting, CGI, automation
  • JavaScript/TypeScript: Frontend, backend (Node.js)
  • SQL: Database design, queries, optimization
  • HTML/CSS: Web markup, responsive design

Core Competencies

Systems Programming

  • Process management
  • Memory management
  • File systems (UNIX)
  • Inter-process communication
  • Signal handling
  • System calls

Algorithms & Data Structures

  • Sorting algorithms
  • Search algorithms
  • Linked lists
  • Stacks & queues
  • Trees (BST, AVL)
  • Hash tables

Networking

  • TCP/IP protocol
  • Socket programming
  • HTTP/1.1 protocol
  • DNS & routing
  • Client-server architecture
  • Network security (TLS)

Concurrency

  • Multithreading
  • Mutex synchronization
  • Semaphores
  • Deadlock prevention
  • Race condition handling
  • Thread-safe code

Graphics & Game Dev

  • 2D/3D rendering
  • Raycasting
  • Texture mapping
  • Matrix transformations
  • Event handling
  • Performance optimization

DevOps & Infrastructure

  • Docker & Docker Compose
  • Containerization
  • Orchestration
  • CI/CD basics
  • System administration
  • Configuration management

Software Engineering Practices

  • 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

πŸ“Š Statistics

Project Completion

Total Projects: 16 completed
Average Score: 106/100
Bonus Projects: 8/16 (50%)
Team Projects: 5/16 (31%)
Individual Projects: 11/16 (69%)

Time Investment

Common Core Duration: ~18 months
Total Hours: ~2,000+ hours
Projects Evaluated: 100+ peer evaluations
Code Written: 50,000+ lines of code

Language Distribution

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)

Project Types

  • 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

🎯 Learning Approach

Research & Exploration

Documentation: Official docs, RFCs, man pages, standards
Resources: Books, online tutorials, GitHub repos, Stack Overflow
Experimentation: Trial and error, testing hypotheses, iterative improvement

Collaboration

Peer Learning: Discussions, whiteboard sessions, code reviews
Pair Programming: Real-time collaboration on complex problems
Knowledge Sharing: Teaching concepts to solidify understanding

Problem-Solving Process

  1. Understand: Read project requirements, identify constraints
  2. Research: Study relevant concepts, algorithms, APIs
  3. Plan: Design architecture, break down into subtasks
  4. Implement: Write code incrementally, test frequently
  5. Debug: Use tools (GDB, Valgrind), systematic troubleshooting
  6. Optimize: Refactor, improve performance, clean up
  7. Document: Write README, comment code, explain design choices
  8. Evaluate: Peer evaluation, receive feedback, iterate

πŸ”‘ Key Takeaways

Technical Skills

  1. Low-Level Understanding: Deep knowledge of memory management, pointers, and system architecture
  2. Algorithmic Thinking: Ability to design efficient algorithms and analyze complexity
  3. System Design: Experience building complex systems from scratch (shells, servers, games)
  4. Full-Stack Capability: Skills spanning from low-level C to high-level web frameworks
  5. Tool Mastery: Proficiency with GDB, Valgrind, Git, Docker, and development tools

Soft Skills

  1. Autonomy: Self-directed learning, resourcefulness, initiative
  2. Collaboration: Teamwork, communication, conflict resolution
  3. Adaptability: Learning new technologies quickly, embracing challenges
  4. Persistence: Debugging for hours, overcoming obstacles, never giving up
  5. Peer Evaluation: Giving and receiving constructive feedback

Professional Mindset

  1. Code Quality: Writing clean, maintainable, well-documented code
  2. Testing: Comprehensive testing, edge cases, error handling
  3. Security: Awareness of vulnerabilities, defensive programming
  4. Performance: Optimization techniques, profiling, benchmarking
  5. Continuous Learning: Staying updated, exploring new technologies

🌐 Connect

42 Profile GitHub LinkedIn


πŸ“š Resources

Official Documentation

Recommended Reading

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

Community


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

About

Software Engineering Curriculum Journey

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published