42-Core-SG

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.

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

This project recreates basic features of printf.

  • Skillset: Variadic Functions
  • External Functions Allowed: malloc, free, write, va_start, va_arg, va_copy, va_end

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

This is a System Administration related exercise.

  • Skillset: Configure Debain, Security configurations and set up SSH, FTP and Web hosting services

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

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

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

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

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

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

Learning C++ Modules 00 to 04.

  • Skillset: C++98 standard, polymorphism, abstract classes, interfaces

This project broaden knowledge of system administration by using Docker.

  • Skillset: Docker compose, Dockerfiles, Docker network, Docker volume, NGINX, MariaDB, Wordpress

This group project of 3 pax asked to replicate a http web server.

  • Skillset: C++, OOP, Sockets, HTTP requests and responds