Português 🌵 | English 💂
All projects developed at 42 school in São Paulo, Brazil.
"There are no classes, teachers, or courses: we use project-based learning, skills mastery, peer-to-peer correction, and gamification to foster learning. Major learning milestones are expressed as levels of experience rather than years; your individual experience sets the pace for learning." Official brochure
This constellation-like programme is divided into two main parts: the core branch of fundamentals (inner layers - a.k.a. the common core), and the complementary specialization paths (outermost layer) branching out into infinity and beyond.
The common core comprises 16 projects, covering the fundamentals of Computer Science, each project granting you new skills and experience points in order to beat the levels and progress towards the final boss: the great Transcendence.
(Projects under the same number are candidates for that level, students must pick only one.)
From that point on, students are orbiting the outermost reaches of the galaxy, free to choose which path to get a specialization at, or even create their own specialization path for other students to follow once they've cleared the common core.
At its core, the 42 programme intends to train the students not only on the fundamental principles of computer science, but also on how to learn fast and efficiently, so that students are able to learn on demand any novel language, framework or paradigm, in an ever-changing world.
At 42 São Paulo, the common core is split in 3 main parts, the first two being entirely built using C/Shell scripts, moving on in the 3rd part to Object-Oriented Programming (OOP) with C++ and complementary front-end, back-end and containerisation technologies.
All projects in phase 1 are individual deliberables. Starting in phase 2, for some projects students must team up in pairs or groups and work together to learn and solve problems. Group projects are marked with a 🚻.
name | subject | synopsis |
---|---|---|
libft | Static library, Makefile. | Build your own basic C static library, which will be used throughout the rest of the programme. Some of the ft_* functions mostly mimic the behaviour of the traditional C functions, while others are custom-made. All functions must be written using at most write() and malloc() . |
get_next_line | File descriptors and static+dynamic memory allocation. | Read from a file descriptor and deliver one line, that is, a \n -terminated string of chars. This project is later incorporated into Libft. |
ft_printf | Formatting string and variable args. | Build your own version of printf ! This project is later incorporated into Libft. |
Born2BeRoot | Virtualisation. | Set up an SSH server running on Linux with basic system administration, strong password rules, encryption, and more. |
So_Long / fractol / fdf | Window rendering and keyboard+mouse events management. | First steps into rendering graphics on the screen! A choice between rendering either fractals (fractol ), 3D wireframes (fdf ) or a 2D top-down video game (so_long ). The proprietary Minilibx library (an X11 API) is used in these projects. |
pipex / minitalk | An intro to Unix Processes in C. | A choice between having a client/server pair of processes exchanging data (minitalk ), or simulating the pipe operator (| ) in Bash using C pipes and forks (pipex ). |
name | subject | synopsis |
---|---|---|
Push_Swap | Sorting algorithms and stacks. | A list of unordered numbers must be taken in and sorted out, with a twist: the numbers must be sorted by means of using exactly two stacks , and a set of 11 stipulated stack operations. |
Minishell 🚻 | A minified version of a Bash shell written in C. | Including basic parsing of pipes and redirections, built-ins, and support for commands execution via $PATH or absolute paths. |
Philosophers | Multithreading in C. | Solving the famous dining philosophers problem proposed by Dijkstra, avoiding data races and deadlocks. |
Netpractice | Networking and routing. | A set of problems simulating LAN's and networks with Internet access. A basic understanding of IP addresses and routing tables is needed to solve each and every problem in under 15 minutes altogether. |
Cub3d / miniRT 🚻 | Raycasting and Raytracing | Deeper study of graphics computing using a LibX interface to code either of a raycasting (cub3d ) or a raytracing (miniRT ) engine. |
name | subject | synopsis |
---|---|---|
CPP | Object Oriented Programming. | 9 sets of exercises to guide a hands-on study on classical OOP concepts. |
ft_containers | Classical data structures | Build your own replica of selected C++ Standard Library containers: vectors, maps, stacks and black-red binary trees, implementing class definitions, iterators, operators overload and more. |
inception | Containerisation of a simple web application. | Using docker-compose and Dockerfile , students must set up a network with services needed to run a Wordpress server (including static html files and a database). |
webserv / ft_irc 🚻 | Internet Protocols in C++. | Either build an HTTP server to serve a static file (webserv ) or build an IRC server running over TCP/IP (ft_irc ). |
Transcendence 🚻 | Play the renowned Pong game online with friends! | Teams must deploy a web application where any 42 student can log in and pair up with another student to play a live Pong match. The webapp must also broadcast current matches and allow for friends lists, achievements and more. |
This repository contains git submodules, that is, links to other repositories where the source code for each project is stored separately. Simply git clone
-ing this project leads to an almost empty folder. If you wish to clone this repo and all the contents from the other repos as well, add the --recurse-submodules
flag to your git clone
command, like so:
git clone --recurse-submodules https://github.com/rodsmade/Projets_42_SP.git
If you wish to clone the code for a specific project, simply click on the desired project's link in the folder structure above, and then clone it locally.