Skip to content

anaiel/-42projects

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 

Repository files navigation





42 is an innovative school in Paris, France where students age 18 and over, regardless of prior education, teach themselves and each other about code. There are no classes, no teachers: the cursus consists of a series of projects students have to complete to gain experience and get to the next levels. Collaboration is key: the students corect each other's projets and learn to cooperate and share their findings and struggles.




I started my cursus in November 2019, and this has been my main occupation since.

Table of content

Cursus overview

Because of its innovative system, there is no strict progression along the cursus and no school year. Students can come to school anytime they want, and validate their projects at their own pace. For every project they validate, they gain experience, which allows them to gain levels, which in turn allows them to finish the cursus once they get to level 21.

The cursus has an estimated duration of 3 years.

🏊 Piscine

The Piscine is the selection program to get access to the school. For a month, candidates must complete as many projects, or days as possible. The projects are aimed at developping the students coding skills, from scratch. They all use the C language. There are also exams every Friday evenings, as well as rushes (2-day group projects) and personnal projects during the weekends.

✏️ I attended the August 2018 Piscine, with very little prior knowledge about coding (I used to be an English teacher), and managed to get in!

💫 Holy Graph

Once accepted, students can start their cursus and have more autonomy to choose the projects they want to apply themselves to. The projects are represented on this map, which is called the Holy Graph.

Students start in the inner circle, on the left. Once they get to the center of the circle, they can choose to continue on the right branch (algorithms), the top branch (unix), or the bottom branch (graphics), which are all C projects. In order to access projects beyond the inner circle, they must get to level 5, complete one of the branches and do a 4- to 6-month internship (the internship was rendered optionnal in a later version of the cursus). The cursus comes to an end with a final intership.

✏️ So far I am still within the inner circle and have completed a couple of graphics projects and the PHP piscine, but my main focus has been on the algorithm branch, which I finally completed in July 2019!

🎒 Other projects

The inner circles also gives access to other projects which tackle other languages : the systems administration projets, the Piscine PHP (which gives access to the web branch), or the electronics program.

✏️ On top of that, I also took part in Machine Learning workshops supervised by 42AI, the Artificial Intelligence club at 42.

💻 Projects

Grades are given to every project. 100 is the top score for the mandatory part of the project. Points between 100 and 125 are given for bonuses.

🔵 Inner circle

All project in the inner circle, except the web and SysAdmin branches, are done using the C language and following a strict standard, the Norm, which you can find in the resources folder. For example, functions cannot have more than 25 lines, there cannot be more than 5 function in a .c file, the Makefile may not relink, etc.

🚩 Cursus Start

42 Commandements > Piscine Reloaded > Libft > Get_Next_Line > Fillit

Project name Description Goals Solo/Group Status Grade Start Date End Date
42 Commandements Welcome, young cadet! Code of conduct Solo 100 18-11-05 18-11-05
Piscine Reloaded Go over some exercises from the piscine Basics of C Solo 100 18-11-05 18-11-06
Libft Recode a number of standard C library functions Basics of C, static libraries Solo 125 18-11-06 18-11-19
Get_Next_Line You'll always need to read content line by line File descriptors, basic parsing, bufferisation Solo 112 18-11-19 18-11-21
Fillit What's the smallest square for these tetriminos? Basic algorithm, input/output Group 100 18-11-22 18-11-29

🔱 Algo branch

Algo branch > Ft_printf > Push_swap > Lem-in > Corewar

Project name Description Goals Solo/Group Status Grade Start Date End Date
ft_printf Code your own printf! Parsing, variational functions Group 110 18-11-30 18-12-23
Push_swap Sort a stack as efficiently as possible Sorting algorithms, basics of stacks manipulations Solo 125 18-12-27 19-02-11
Lem-in How long will it take the ants to get out of their maze? Graph search, max flow problem Group 124 19-03-06 19-04-29
Corewar Let the fight begin! Compilation, simple VM, simplified assembler, visualization Group 125🌟 19-30-04 19-07-15

🎮 Graphics branch

Graphics branch > FdF > Fract'ol

Project name Description Goals Solo/Group Status Grade Start Date End Date
FdF Represent the mesh in "wire of a field" in 3D Simple graphic library, segment layout, events, 3D to 2D projection Group 125 19-01-17 19-02-14
Fract'ol Discover the psychedelic world of fractals 2D programming, optimization Solo 117 19-02-14 19-03-04

🎒 Other projects

🔐 Systems administration branch

SysAdmin Branch > init > Roger-Skyline-1 > Docker-1

Project name Description Goals Solo/Group Status Grade Start Date End Date
Init Introduction to systems administration and networks Unix, systems administration Solo 100 18-12-13 18-12-22
Roger-Skyline-1 🌟 Systems administration and networks basics Unix, systems administration Solo 60 19-08-01 19-08-08
Docker-1 Think with containers! Micro services, docker, unix, containers, DevOps Solo

🌐 Web Branch

Web Branch > Piscine PHP > Camagru > Matcha > Hypertube

Project Name Description Goals Solo/Group Status Grade Start Date End Date
Piscine PHP Introduction to basic web technologies HTML, procedural PHP, Web server, SQL, object oriented PHP Solo 104 05-20-2019 06-02-2019
Camagru Create an instagram-like website User management, permissions, mailing, security/data validation Solo
Matcha Create a dating website Micro-framework, advanced user management, real-time web, geolocation, security/data validation Group
Hypertube Create an video streaming website MVC framework, Omniauth, Background jobs, Internationalisation Group

💡 Machile learning workshops

Every thursday for 14 weeks in 2019, I attended the machine learning workshops with 42AI, the association for Artificial Intelligence at 42. The workshops aim at giving an understanding of the main machine learning algorithms. Every week, a student gives a presentation on an algorithm, followed by a practical application for the attendees to get their hands dirty, using python and numpy. I gave the presentation about the k-means clustering algorithm. More information about the content of the workshops and my exercises here.

Work Experience

🎮 First internship: Fullstack web developer

Between October 2019 and March 2020 I completed my first intership with Ikigai as a web developer. Ikigai is a small team of game designers, game developers and web developers working with the Sorbonne Université (Université Pierre et Marie Curie) to create free educational games for university students, focusing on providing a regular video game quality experience. They have been working on topics such as fake news, gravitation, etc. The web development part of the project focuses on developing a steam-like website to download games developed by the Ikigai team (and, in the long run, other educational games), and provide the architecture for a quiz game (for which professors at the university should be able to create and edit questions).

JavaScript TypeScript Node.js Angular Jest

📋 As a web developer, my tasks where to:

  • fix bugs and improve the current website
  • maintain the API for the quiz game
  • provide new features for the quiz game (such as importing or exporting questions from/to files with various existing formats)

A particularity of the development team at Ikigai is that, for various reasons, the team changes very often. It means that at one point there might not be someone with experience with some parts of the codebase, and the question of legacy code and maintaining code quality is paramount. We decided to take on the challenge of creating a better experience for future developers by improving the codebase and development flow:

  1. I started using a Test Driven Development approach, by setting up Jest writing unit tests.
  2. I refactored parts of the codebase that we worked on most often to have one source of truth on how CRUD operations should be conducted regarding the questions of the quiz game.
  3. I included Jest, Prettier and ESLint as git hooks to be run before changes could be pushed to a git branch and made sure the code of the files I modified passed the different tests.
  4. I improved the Angular code on parts of the application I made changes to to make the most of TypeScript's features.

About

All projects completed at @42BornToCode

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published