Here you can find my side projects and the ones I did as a student of 42 Wolfsburg.
| Project | Status | Description |
|---|---|---|
| DominionCards | π§ | Android app to look up cards from the card game Dominion |
| Advent_of_Code | β | my solutions for some of the coding puzzles from the Advent of Code events |
| TicTacToeMinimax | β | p5.js web page to play TicTacToe against the computer with perfect strategy |
| DecisionTree | β | p5.js web page to learn about Decision Trees and Information gain |
| RiddelsApp | β | Android app that displays an English riddle and solution |
42 Wolfsburg describes itself as the Hogwarts for software engineers. But it's not your typical school with teachers, lectures, tuition fees and high entry barriers. We learn based on the peer-to-peer model, where everybody is a teacher and a learner at the same time. The school is there to support us with this by providing the space and infrastructure to house the community. Further it provides the (coding) projects we have to solve - often in small groups of two to three peers. The project description specifies what the result should look like but not how to get there. To learn about new topics we use the resources from other students, industry experts and our library.
After project completion, a couple of other peers will take a look at the project and give feedback. Completed projects grant experience points that is used to unlock more advanced projects, if you can also pass the exams that will put your skills to the test: Can you solve the problem again but with out any external help? Failing is part of the learning journey; so there is nothing bad about not managing to successfully complete a project or exam - You just try it again when you worked out what you missed / did not understood yet.
The curriculum, that defines the projects, aims to prepare us to become a successful software engineer by covering the basics and also being constantly updated to stay relevant. It has proven itself and is used in sister 42 schools in over 20 countries all over the world. We learn the basics in the Core that takes around 12-18 months to complete, where the focus is on learning the programming languages C and C++, as well as understanding how Unix operating systems and common algorithms work. During that we also learn how to efficiently learn. That's an important skill to have in this industry. And this is also where we will go next. Taking an internship (minimum 4 moths) to learn things we can't really learn in school. After that we can come back to the school to specialize in a certain area of computer science and help grow the community around the school.
| No | Project | Status | Description |
|---|---|---|---|
| 1 | libft | β | my own version of some of the C standard library functions |
| 2 | get_next_line | β | read a file line by line |
| 3 | ft_printf | β | my own version of the printf function |
| 4 | Born2beRoot | β | intro to virtualization with Debian on VirtualBox |
| 5 | exam_rank_02 | β | check understanding of get_next_line/ft_printf |
| 6 | push_swap | β | sorting with two stacks in the fewest moves |
| 7 | so_long | β | small 2D game with minilibx |
| 8 | minitalk | β | small chat application using UNIX signals |
| 9 | philosophers | β | solve dying philosopher problem - multithreading |
| 10 | minishell | β | simple bash-like shell |
| 11 | exam_rank_03 | β | check understanding of get_next_line/ft_printf |
| 12 | NetPractice | β | basics of IP networks and subnetting |
| 13 | CPP Module 00 | β | intro to C++, megaphone, PhoneBook, Account |
| 14 | CPP Module 01 | β | memory allocation, references, pointer to members and switch statement |
| 15 | CPP Module 02 | β | Fixed point numbers to explore adhoc-polymorphism and OCCF |
| 16 | CPP Module 03 | β | creating clap-trap variants using inheritance |
| 17 | CPP Module 04 | β | subtype-polymorphism with animals, abstract classes and interfaces |
| 18 | CPP Module 05 | β | exceptions + try/catch on the example of bureaucrats and forms |
| 19 | CPP Module 06 | β | C++ casts |
| 20 | CPP Module 07 | β | templates |
| 21 | CPP Module 08 | β | templated containers, iterators and algorithms |
| 22 | exam_rank_04 | β | microshell checks understanding parsing, forks and pipes |
| 23 | miniRT | β | raytracing with spheres, planes, cylinders and lighting |
| 24 | Professional Portfolio | π§ | presenting myself to be able to sell my labour |
| 25 | ft_containers | β | re-implement C++ containers (vector, map, stack, iterators, set) |
| 26 | inception | β | virtualize several docker images |
| 27 | webserv | π | create my own HTTP server |
| 28 | ft_irc | β | create my own IRC sever in C++ |
| 29 | Exam Rank 05 | β | check understanding of C++ |
| 30 | ft_transcendence | β | create real-time multiplayer online pong game using web technology |
| 31 | Exam Rank 06 | β | check understanding of non-blocking server communication with sockets |
| 32 | Internship | π οΈ | acquire real-world experience as a software engineer |