Skip to content

Projects developed at 1337 programming school for the 42 Cursus

Notifications You must be signed in to change notification settings

zelhajou/42cursus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 

Repository files navigation

42cursus

This repository contains my projects developed at 1337 programming school for the 42 Cursus, a programming curriculum developed by 42 Paris. The 42 Cursus is an intensive, peer-to-peer learning program designed to teach computer science and programming skills through project-based learning. Each project is graded by peers using a peer-evaluation system called "correction," and successful completion of each project is required to progress to the next level of the program.

Table of Contents

About 42
Curriculum
Projects
Skills
Stats
Bookshelf
Articles
Study notes and cheat sheets
Tech Stack
Music and Playlists
Contact

About 42

42 is a global education initiative that offers a new way of learning technology: no teachers, no classrooms, students learning from their fellow students (peer-to-peer learning), with a methodology that develops both computing and life skills. The 42cursus is free for whoever is approved in its selection process* - the so-called "Piscine" - becoming thus "cadets" (42's students).

For further information about 42's selection process (the "Piscine"), please visit the C Piscine repo.

Curriculum

42cursus comprises two groups of projects: the first one is known as "inner circle" and the second one, "outer treks" - due to the Holy Graph layout (see image below).

The inner circle is the basic curriculum, with all projects being mandatory to attain level 7 - which is the minimum level required for activities such as internships and interchange.

The outer treks is a collection of diverse project trails in subjects ranging from operational systems to web development which allows cadets to specialize on whatever subject they prefer.

Click to expand the 42 Holy Graph

42 Holy Graph

Projects

The following table lists the projects I've completed as part of the 42 Cursus. Each project is linked to its repository, where you can find the project's description, requirements, and my implementation.

CIRCLE PROJECT DESCRIPTION KEY TAKEAWAYS TECHNOLOGY STATUS
00 Libft A library of useful C functions Basics of C programming, data structures C βœ… 122
πŸ’« πŸ’« πŸ’« πŸ’« πŸ’«
01 ft_printf A function that mimics the behavior of the C library printf function C string formatting, variadic functions C βœ… 100
02 Born2beroot A project on Virtualization basics Virtualization, Linux basics VM, debian βœ… 108
03 get_next_line A function that reads a file line-by-line File I/O, memory management C βœ… 125
πŸ’« πŸ’« πŸ’« πŸ’« πŸ’« πŸ’«
04 Push_swap A program that sorts a stack of numbers Algorithm optimization, stack manipulation C βœ… 125
05 Minitalk A communication program using UNIX signals UNIX signals, inter-process communication C βœ… 100
06 Fract-ol Renders Julia and Mandelbrot fractals Graphics programming, fractal mathematics C βœ… 100
07 Exam Rank 02 Programming skills assessment Problem-solving, time management C βœ… 100
πŸ’« πŸ’« πŸ’« πŸ’« πŸ’« πŸ’«
08 Philosophers Dining Philosophers problem simulation Concurrency, thread synchronization C βœ… 100
09 Minishell Custom shell emulating bash Shell scripting, process management C βœ… 101
10 Exam Rank 03 Programming skills assessment get_next_line or ft_printf function implementation C βœ… 100
πŸ’« πŸ’« πŸ’« πŸ’« πŸ’« πŸ’«
11 Net_practice Networking concepts and protocols Networking fundamentals, protocol analysis Networking, Protocols βœ… 100
12 Cub3d 3D maze using raycasting Graphics programming, raycasting C βœ… 115
13 CPP Modules 00 - 04 C++ fundamentals and advanced concepts Namespaces, classes, memory allocation, pointers, inheritance, polymorphism, templates C++ βœ… 80
14 Exam Rank 04 Microshell exam Shell command execution, piping, error handling C βœ… 100
πŸ’« πŸ’« πŸ’« πŸ’« πŸ’« πŸ’«
15 Webserv Building a web server from scratch HTTP protocol, socket programming, multi-threading C++ βœ… 125
16 Inception Docker-based system setup and configuration Containerization, Docker, system orchestration Docker 🚧 In Progress
17 CPP Modules 05 - 08 Advanced C++ concepts Operator overloading, exception handling, file I/O, STL, advanced OOP C++ 🚧 In Progress
18 Exam Rank 05 Advanced programming skills assessment Complex problem-solving, optimization, advanced C++ concepts C++ πŸ“ Pending
πŸ’« πŸ’« πŸ’« πŸ’« πŸ’« πŸ’«

Skills

These are some of the skills I've developed during my time at 42.

Hard-skills

My Skills

.
β”œβ”€β”€ Computer Science
β”‚   β”œβ”€β”€ Computer Systems
β”‚   β”‚   └── Distributed Systems (Operating Systems, Linux)
β”‚   β”‚       β”œβ”€β”€ Linux Kernel and System Programming
β”‚   β”‚       β”‚   β”œβ”€β”€ System Calls
β”‚   β”‚       β”‚   β”œβ”€β”€ Processes and Threads
β”‚   β”‚       β”‚   β”œβ”€β”€ Signals and IPC (Inter-Process Communication)
β”‚   β”‚       β”‚   β”œβ”€β”€ Memory Management
β”‚   β”‚       β”‚   β”œβ”€β”€ File I/O
β”‚   β”‚       β”‚   β”œβ”€β”€ Sockets and Networking
β”‚   β”‚       β”‚   └── Threads and Concurrency
β”‚   β”‚       β”œβ”€β”€ Linux Development
β”‚   β”‚       β”‚   β”œβ”€β”€ C/C++ Development (gcc, g++, make)
β”‚   β”‚       β”‚   β”œβ”€β”€ Scripting Languages (Python, Shell Scripting)
β”‚   β”‚       β”‚   β”œβ”€β”€ Version Control Systems (Git)
β”‚   β”‚       β”‚   └── IDEs (Integrated Development Environments)
β”‚   β”‚       β”œβ”€β”€ Linux Virtualization (Docker, VM)
β”‚   β”‚       β”œβ”€β”€ Linux Command-Line Tools and Utilities
β”‚   β”‚       β”‚   β”œβ”€β”€ Text Editors (nano, vim, emacs)
β”‚   β”‚       β”‚   β”œβ”€β”€ Networking Tools
β”‚   β”‚       β”‚   β”œβ”€β”€ System Monitoring
β”‚   β”‚       β”‚   β”œβ”€β”€ Package Management Tools
β”‚   β”‚       β”‚   β”œβ”€β”€ Remote Access
β”‚   β”‚       β”‚   └── Disk and File System Tools
β”‚   β”‚       β”œβ”€β”€ Shell and Command Line (Bash, Zsh)
β”‚   β”‚       └── Linux Networking
β”‚   β”‚           β”œβ”€β”€ IP Addressing and Subnetting
β”‚   β”‚           β”œβ”€β”€ TCP/IP Protocol Suite
β”‚   β”‚           β”œβ”€β”€ OSI Model
β”‚   β”‚           └── Network Protocols (HTTP, FTP, SSH, DNS)
β”‚   └── Theoretical Computer Science
β”‚       β”œβ”€β”€ Algorithms and Data Structures
β”‚       β”‚   β”œβ”€β”€ Sorting Algorithms (Bubble Sort, Quick Sort, Merge Sort)
β”‚       β”‚   β”œβ”€β”€ Searching Algorithms (Linear Search, Binary Search)
β”‚       β”‚   └── Data Structures (Arrays, Linked Lists, Stacks, Queues, Trees, Graphs)
β”‚       └── Complexity Theory
β”‚           β”œβ”€β”€ Big O Notation
β”‚           └── Time and Space Complexity
└── Software Engineering
    └── Programming Languages
        β”œβ”€β”€ C Programming
        β”‚   β”œβ”€β”€ Standard Library Functions
        β”‚   β”œβ”€β”€ Memory Management
        β”‚   β”œβ”€β”€ Pointers and References
        β”‚   β”œβ”€β”€ Data Types and Structures
        β”‚   β”œβ”€β”€ Preprocessor Directives
        β”‚   └── Compilation and Linking
        β”œβ”€β”€ C++ Programming
        β”‚   β”œβ”€β”€ Object-Oriented Programming (OOP)
        β”‚   β”œβ”€β”€ Classes and Objects
        β”‚   β”œβ”€β”€ Inheritance and Polymorphism
        β”‚   β”œβ”€β”€ Templates and Generic Programming
        β”‚   β”œβ”€β”€ Exception Handling
        β”‚   └── Standard Template Library (STL)
        └── Shell Scripting
            β”œβ”€β”€ Bash Scripting
            └── Command-Line Utilities

Soft-skills

  • Self-learning and proactivity: At 42, self-learning is at the core of its peer-to-peer learning methodology. There are no teachers whatsoever; the learning process is based on googling, enquiring your classmates, and empirical knowledge, with each student learning at their own pace.
  • Teamwork: Some projects must or should be developed in groups, which promotes collaborative work among cadets. The major challenge here is to equalize the different knowledge levels while finding a common work methodology that allows all team members to contribute to the project.
  • Time management and resiliency: The school is open 24/7. Thus, the cadets are free to work whenever they want, which demands excellent time management skills and resiliency for not "drowning" amid the massive load of work demanded by the program.
  • Problem-solving: The projects are designed to challenge the cadets' problem-solving skills, requiring them to think outside the box and find creative solutions to complex problems.
  • Communication: The peer-to-peer learning methodology requires cadets to communicate effectively with their peers, both to ask for help and to help others. This promotes the development of communication skills, which are essential in the workplace.

Stats

42 Stats

zelhajou's 42 stats

GitHub Stats

These are some of the books I've read or plan to read to deepen my knowledge in computer science, programming, and other subjects.

Name Description Category Image
The Linux Programming Interface-Michael Kerrisk A comprehensive guide to system programming on the Linux platform by Michael Kerrisk. Covers system calls, libraries, and more. Computer System-level Programming
Advanced Programming in the Linux Environment Explores advanced topics in Linux programming, offering insights into system calls, libraries, and techniques for efficient software development. Computer System-level Programming
Operating System Concepts A classic textbook on operating system principles and concepts, providing a foundational understanding of OS design and functionality. Computer System-level Programming
Networking Essentials - A CompTIA Network+ N10-008 Textbook Provides comprehensive coverage of essential networking concepts and technologies required for CompTIA Network+ certification exam N10-008. Authored by Jeffrey S. Beasley and Piyasat Nilkaew, this textbook offers detailed explanations and practical examples to help readers understand networking fundamentals. Computer Networking
Computer Networks - A Tanenbaum - 5th edition A comprehensive textbook on computer networking, authored by Andrew S. Tanenbaum, covering a wide range of networking topics including protocols, architectures, and applications. Computer Networking
UNIX Network Programming Volume 1, Third Edition: The Sockets Networking API A classic reference on UNIX network programming, authored by W. Richard Stevens, offering in-depth coverage of the Sockets API and various networking concepts on UNIX-based systems Computer System-level Programming

Blogs and Articles

These are some of the blogs and articles I've written about my experiences at 42 and other topics related to computer science and programming.

Other blogs and articles by 42 students:

Study Notes and Cheat Sheets

These are some of the study notes and cheat sheets I've created to help me learn and remember key concepts in computer science, programming, and other subjects.

Tech Stack

Music and Playlists

Here are some of my favorite music and playlists to listen to while coding or relaxing.

  • Coding days - A playlist of my favorite music to listen to while coding.
  • Spotify - Take a moment to listen to some of my favorite playlists. I hope you enjoy them as much as I do!
  • Radiooooo - A website that lets you explore music from different countries and decades.
  • Moroccan tapes - A website that showcases Moroccan music from the 60s, 70s, and 80s.

Contact

Feel free to reach out to me if you have any questions, suggestions, or just want to chat!

Gmail Linkedin Twitter Discord Telegram Instagram

About

Projects developed at 1337 programming school for the 42 Cursus

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published