This is a repo of my completed projects in 42 SUTD Singapore Core program. 42 Projects limits usage of external functions or libraries to challenge students in understanding fundamentals.
Project 1: libft - 125/100
This project is about coding a C library. It contains a lot of general purpose functions programs will rely upon.
- Skillset: Basic C programming, Pointers and Memory Manipulation, Structures and Link Lists
- External Functions Allowed: write, malloc, free
Project 2: ft_printf - 100/100
This project recreates basic features of printf.
- Skillset: Variadic Functions
- External Functions Allowed: malloc, free, write, va_start, va_arg, va_copy, va_end
Project 3: get_next_line - 125/100
This project is about programming a function that returns a line read from a file descriptor.
- Skillset: Static Variables, File Descriptor, ARGC ARGV, Memory Management
- External Functions Allowed: read, malloc, free
Project 4: born_2_be_root - 125/100
This is a System Administration related exercise.
- Skillset: Configure Debain, Security configurations and set up SSH, FTP and Web hosting services
Project 5: push_swap - 125/100
This project asks to sort data on a stack, with a limited prescribe set of actions, using the lowest possible moves.
- Skillset: Sorting Algorithms, Structs
- External Functions Allowed: read, write, malloc, free, exit
Project 6: pipex - 125/100
This project recreates basic features of linux's PIPE function.
- Skillset: Linux Processes, Fork, Pipe, File Descriptors
- External Functions Allowed: open, close, read, write, malloc, free, perror, strerror, access, dup, dup2, execve, exit, fork, pipe, unlink, wait, waitpid
Project 7: fdf_wireframe_model - 125/100
This project is about creating a simple wireframe model using the school's MiniLibX library.
- Skillset: Connecting lines from coordinates, 3D Projection/Rotation/Translation/Scale, Key and Mouse Hooks
- External Functions Allowed: open, close, read, write, malloc, free, Math Library, MiniLibX functions
Project 8: minishell - 125/100
This group project (2 pax) recreates a simple bash shell with built-in functions.
- Skillset: Processes, file descriptors, pipes, redirection, collabration
- External Functions Allowed: readline, rl_clear_history, rl_on_new_line, rl_replace_line, rl_redisplay, add_history, printf, malloc, free, write, access, open, read, close, fork, wait, waitpid, wait3, wait4, signal, sigaction, sigemptyset, sigaddset, kill, exit, getcwd, chdir, stat, lstat, fstat, unlink, execve, dup, dup2, pipe, opendir, readdir, closedir, strerror, perror, isatty, ttyname, ttyslot, ioctl, getenv, tcsetattr, tcgetattr, tgetent, tgetflag, tgetnum, tgetstr, tgoto, tputs
Project 9: philosophers - 125/100
This project creates a program that solves the "dining philosophers" problems.
- SKillset: Multi-threading, mutex, semaphore
- External Functions Allowed: memset, printf, malloc, free, write, usleep, gettimeofday, pthread_create, pthread_detach, pthread_join, pthread_mutex_init, pthread_mutex_destroy, pthread_mutex_lock, pthread_mutex_unlock
- External Functions Allowed (Bonus): memset, printf, malloc, free, write, fork, kill, exit, pthread_create, pthread_detach, pthread_join, usleep, gettimeofday, waitpid, sem_open, sem_close, sem_post, sem_wait, sem_unlink
Project 10: miniRT (RayTrace) - 125/100
A group project of 2 pax to generate images using Raytracing protocol.
- Skillset: 3D Vector math, Raytracing protocol
- External Functions Allowed: open, close, read, write, printf, malloc, free, perror, strerror, exit, Math Library, MiniLibX functions
Project 11: C++ Modules 00 to 04 - 100/100
Learning C++ Modules 00 to 04.
- Skillset: C++98 standard, polymorphism, abstract classes, interfaces
Project 12: Inception (Docker) - 100/100
This project broaden knowledge of system administration by using Docker.
- Skillset: Docker compose, Dockerfiles, Docker network, Docker volume, NGINX, MariaDB, Wordpress
Project 13: Webserv - 100/100
This group project of 3 pax asked to replicate a http web server.
- Skillset: C++, OOP, Sockets, HTTP requests and responds
Project 14: Transcendence - 100/100
This group project of 3 pax asked to develop a web application with Django of a pong game with chat interface, auth and AI Bots.
- Skillset: Django, Python, Websocket