THE CONTENTS
The 42 curriculum caters to students of all profiles, offering the best computer science education at a personalized pace.
THE STUDY PATH
THE EDUCATION PROCESS
The training at 42 Le Havre has a total indicative duration of 3 to 5 years, depending on the goals and personal progress.
It is divided into three main phases:
This experience builds the minimum set of skills, both technical and interpersonal, for an entry-level professional. With a maximum duration of two years based on personal progression, it allows individuals to learn C programming, develop simple software using classical algorithms, and explore file system access and Unix process management. A basic understanding of network architecture and system administration is also included. Object-oriented programming is part of the program, along with a client-server project and the fundamentals of web development.
The average observed duration is one year.
An internship of 4 to 6 months is to be completed at the end of the common-core. It marks the first phase of a student’s professional development in the program.
There are no set departure dates, and it can be done on a full-time or part-time basis.
This section covers the traditional areas of digital technology and programming, such as artificial intelligence, security, and mobile application development. It emphasizes group project work and collaboration, as well as neutrality towards brands, technologies, and languages, in order to develop our students’ adaptability and prevent their obsolescence in the job market in 5 or 10 years. The choice of study areas is free and provides complementary skills in various expertise areas. Students themselves decide when to stop their course and become alumni.
The seven proposed specializations are as follows:
- Cybersecurity
- Systems Architecture
- Systems and Software Development
- Mobile Development
- Video Games and Graphics
- Web Development
- Artificial Intelligence and Data
This second part can be done in either an initial or alternating format.
It is divided into three main phases:
This experience builds the minimum set of skills, both technical and interpersonal, for an entry-level professional. With a maximum duration of two years based on personal progression, it allows individuals to learn C programming, develop simple software using classical algorithms, and explore file system access and Unix process management. A basic understanding of network architecture and system administration is also included. Object-oriented programming is part of the program, along with a client-server project and the fundamentals of web development.
The average observed duration is one year.
An internship of 4 to 6 months is to be completed at the end of the common-core. It marks the first phase of a student’s professional development in the program.
There are no set departure dates, and it can be done on a full-time or part-time basis.
This section covers the traditional areas of digital technology and programming, such as artificial intelligence, security, and mobile application development. It emphasizes group project work and collaboration, as well as neutrality towards brands, technologies, and languages, in order to develop our students’ adaptability and prevent their obsolescence in the job market in 5 or 10 years. The choice of study areas is free and provides complementary skills in various expertise areas. Students themselves decide when to stop their course and become alumni.
The seven proposed specializations are as follows:
- Cybersecurity
- Systems Architecture
- Systems and Software Development
- Mobile Development
- Video Games and Graphics
- Web Development
- Artificial Intelligence and Data
This second part can be done in either an initial or alternating format.
IN PRACTICE
PROJECT EXAMPLES
FT_TRANSCENDENCE
It’s great to have fun playing a video game, but it’s even better to program one… and it’s even better to organize online matches! During the ft_transcendence project, you’ll learn how to recreate the classic Pong game from 1979, integrate it into a website, and turn it into a platform for challenges. The website must be capable of offering matches between players, so it needs to handle registrations, victories, progression in the rankings, a spectator mode, and a chat. This ambitious project is the final step to complete before moving on from the core curriculum and gaining access to internships and specialized fields.
MINIRT
Ray tracing is a method for rendering images on a computer. It simulates the path of light: it seeks out the light sources in the scene to be displayed, determines which objects are illuminated, and based on the viewing angle, calculates which light particles are supposed to reach the screen. It demands a significant amount of computational power and has only become popular recently with certain high-budget video games due to advancements in graphics card technology. To achieve this, it is necessary to apply scientific formulas and integrate them. However, it’s important to note that this isn’t about doing mathematics or physics; the goal of this project is quite the opposite. To program ray tracing, you don’t need to know how to prove a theorem!
FAMINE, PESTILENCE, WAR AND DEATH
Learning to code a virus is about learning computer science through cunning. Through four dedicated projects, each offering a new technique, the goal is to discover how such programs work through hands-on practice. While the initial purpose may be just to leave a trace of one’s presence, the final virus must be capable of hiding itself and even modifying its source code. It’s important to emphasize that these viruses are created for educational purposes, and precautions are required during their creation and evaluation. Making them available or using them outside of this educational context can result in disciplinary actions, including potential expulsion from 42.
PUSH_SWAP ET LEM_IN
Projects like “push_swap” and “lem_in” are designed to help individuals better grasp computer algorithms. In “push_swap,” the objective is to reorder a list of numbers in the most efficient way possible. However, it’s important to note that there isn’t just one way to succeed; you need to create a program that can adapt to various situations. In “lem_in,” the challenge involves solving a maze. The goal is to find the fastest path, even when multiple options are available. The difficulty lies in not guiding just one person through the maze, but an entire colony of ants. The target? 2 seconds or less! These projects are valuable for honing algorithmic skills in a practical context.
COREWAR
Core War is a programming competition invented by D. G. Jones and A. K. Dewdney. The goal is to pit programs, known as “champions,” against each other to gain control of a virtual arena. In the corewar project, the challenge is not to learn new concepts or a new language but to recreate both champions and the arena that serves as the competition ground. The difficulty lies in designing efficient champions that can outperform others in this unique virtual battlefield. The best champions created by students are often invited to participate in a friendly tournament during a dedicated event, showcasing their programming skills in this unconventional competition.
FT_TURING
The Turing machine is a mathematical concept invented by Alan Turing in 1936. It can be thought of as an infinite tape divided into cells, with a read/write head that can move along the tape, change the symbols in the cells (e.g., from 1 to 0), skip cells, and move backward. In the “ft_turing” project, the goal is to create such a Turing machine and encode various algorithms into it. This project not only teaches the principles of computation but also provides insights into the culture and history of programming, particularly in the early 20th century. It’s worth noting that before starting this project, participants must complete and pass a specific “Piscine” dedicated to the programming language used, which is OCaml in this case. Even after the selection tests, additional “Piscines” are offered to help participants quickly learn specific concepts or languages.
FRACT-OL
Fractal patterns can be found everywhere in nature, from the smallest, like snowflakes, to the largest, such as clouds, mountains, or even galaxies. These are patterns that repeat infinitely, like a triangle whose sides are triangles whose sides are triangles, and so on. This project focuses on graphic programming of images while immersing oneself in a psychedelic universe. In addition to being able to display fractal figures, the challenge is to navigate within them and modify their parameters in real-time. The most creative minds can also submit their own enhancements to create truly captivating images! This project offers an opportunity to explore the beauty of fractals through computer graphics and interactivity.
MATCHA
This project involves creating an online dating website with several key features. First, it’s necessary to manage individual profiles, including personal descriptions, interests, and photos. Next, users should be able to browse other people’s profiles and contact them. Finally, the project’s name comes from its core functionality: it should be able to find compatible relationships or “matches” among the registered members of the site. Ensuring the security of user data is of utmost importance in this project. It can be implemented using the technology of your choice and is accessible after completing an introductory “Piscine” for a new programming language, such as Python, Ruby, or PHP. This project combines web development and database management with the goal of creating a functional and secure online dating platform.
MULTILAYER PERCEPTRON
Modern applications of computer science can be found everywhere, including in the field of healthcare. Artificial neural networks, in particular, are programs capable of learning from extensive datasets. The purpose of this project is to introduce individuals to such networks and implement algorithms within them. Specifically, it involves detecting whether breast cancer is malignant or benign through breast cancer diagnostics conducted in Wisconsin. This project was proposed by the student association specializing in machine learning: 42AI. It has been approved by the educational teams and is now available to all. It offers a practical application of machine learning techniques in a critical domain such as healthcare.
WHAT 42 PROVIDES
THE SKILLS
- Imperative programming
- C
- Functional programming
- Lisp
- OCaml
- Rust
- Object-oriented programing
- C++
- C#
- Développement mobile
- Java
- Python
- Swift
- Algorithms and AI
- Generic algorithms
- Deep learning
- Machine learning
- Graphs
- Neural networks
- Graphic Programming
- Image computation
- Metal
- OpenGL
- Unity
- Unreal
- Engine
- Vulkan
- System programming
- Low level
- Kernel
- Posix
- Embedded systems
- UNIX
- System and network administration
- System administration
- Network architecture
- Cloud
- DevOps
- Docker
- Continous integration
- Kubernetes
- LAN and WAN addressing plan
- Services réseau
- Virtualization
- Security
- Packet analysis
- Man-In-The-Middle attack
- Countermeasures
- Exploits
- Pare-feux
- Rootkits
- Backups
- Trojans
- IP address spoof
- Virus
- Data and databases
- Data lake
- Data mining
- MySQL
- NoSQL
- Oracle
- PostgreSQL
- SQL
- Data structure
- Data visualization
- Parallel programming
- Cuda
- Mutexes
- OpenCL
- Programmation concurrente
- Programmation GPU
- Sémaphores
- Threads
- Adaptation and creativity
- Innovation
- Pensée latérale
- Web
- Back development
- Full stack development
- Django
- Frameworks
- Node
- Rails
- React
- Symfony
- Technological Intergration
- Complex environments
- Heterogeneous environments
- Company projects
- Rigor
- Code style
- Regression testing
- Organisation
- Personal organization
- Project management
- Professional experience
- Interships
- Apprenticeships (en option)
- Group and interpersonal
- Group management
- Communication