These are my projects from Ecole 42 Nice! You can find the project details along with a description and the grade obtained here.
You can find all the codes on my GitHub page !
The "minishell" project focuses on creating a simplified shell, which is a command-line interface allowing users to interact with the operating system. We had to develop a program that reads and executes commands, handles basic shell functionalities like environment variables and signal handling, and supports various built-in commands. This project evaluates our grasp of system calls, process management, and string manipulation, providing hands-on experience in designing a functional and efficient shell for basic command-line interactions.
The "philosophers" project centers on the dining philosophers problem, exploring synchronization in concurrent programming. I had to create a program where multiple philosopher threads compete for shared resources (forks) while avoiding deadlocks and ensuring fair access. This project evaluates our ability to manage resources, implement synchronization mechanisms like mutexes, and tackle challenges in multithreaded environments, providing hands-on experience in concurrent programming complexities.
The "fdf" project at involves creating a 3D wireframe graphical representation of terrain maps. I had to develop a program that reads map data, constructs a visual grid, and projects it onto a 2D plane to simulate elevation. This project assesses our skills in parsing, graphics rendering, and spatial transformations, offering practical experience in visualizing data and handling graphical tasks.
The "minitalk" project focuses on interprocess communication through signal handling in a UNIX environment. I had to develop a program that allows two processes to exchange messages using custom signals, demonstrating our understanding of signals, binary encoding, and synchronization. This project evaluates our grasp of low-level system operations, communication protocols, and complex programming details in a real situation.
The "push_swap" project involves sorting integers using two stacks and limited operations. I had to create a program that takes unordered integers, rearranging them in ascending order while optimizing operations. This assesses our algorithmic skills, data manipulation, and low-level programming concepts, providing practical sorting and optimization experience.
The "born2beroot" project focuses on setting up a secure and functional Virtual Machine (VM) running a Linux distribution. I had to configure various aspects of the system, including user management, firewall setup, and system monitoring. This project assesses our ability to handle system administration tasks, security measures, and VM configuration, providing hands-on experience in creating and maintaining a secure computing environment.
The "get_next_line" project revolves around creating a function that reads and returns lines from a file descriptor, one line at a time. I had to develop a program that efficiently handles reading and memory allocation, allowing sequential extraction of lines from files. This project evaluates our proficiency in file manipulation, memory management, and handling edge cases, offering practical experience in dealing with input/output operations in a structured manner.
The "ft_printf" project involves creating a custom implementation of the printf function in C, allowing formatted output to various types of data. I had to develop a program that handles formatting specifiers, conversions, and output to the console. This project evaluates our understanding of string manipulation, parsing, and data formatting, offering practical experience in designing a versatile and customizable output function for diverse programming needs.
The "Libft" project entails building a custom C library containing fundamental functions that replicate standard library functions. I had to develop a collection of utility functions spanning areas like string manipulation, memory management, and linked list operations. This project assesses our grasp of programming concepts, algorithm implementation, and software design, providing hands-on experience in creating a foundation for future programming tasks with a self-made library.