Skip to content

About

Curated archive of 108 software engineering projects — from C/Unix foundations to networking, DevOps, game engines and IoT.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

10 Commits

Folders and files

Repository files navigation

Software engineering portfolio

Explore the live portfolio

Projects Years Focus GPA Environment

108 projects built between 2018 and 2023, kept as they were delivered: the source, the constraints that shaped it, how to build it, and an honest account of what went past the brief and what did not.

Projects

Tek5/   2022-2023 · 2 projects · IoT and real-time 3D
├── Web3/                           real-time 3D on the web
│   └── ThreeJsJourney/             42 lessons, from a cube to GPU shaders
└── IOT/                            connected devices
    └── CarePlant/                  connected plant, sensor to dashboard    · D

Tek3/   2020-2021 · 16 projects · advanced C++, applications, DevOps and security
├── CPP/                            advanced C++ and networking
│   ├── CPP_babel/                  Babel, voice over IP                    · B
│   ├── CPP_rtype/                  R-Type, multiplayer game engine         · B
│   └── CPP_zia/                    Zia, modular HTTP server                · A
├── AppDev/                         web and mobile applications
│   ├── DEV_dashboard/              Dashboard, aggregated service widgets   · A
│   └── DEV_epicture/               Epicture, Reddit client                 · A
├── DevOps/                         infrastructure and automation
│   ├── DOP_my_marvin/              My Marvin, Jenkins CI/CD pipeline       · A
│   ├── DOP_popeye/                 Popeye, multi-service containerisation  · A
│   └── DOP_bernstein/              Bernstein, Kubernetes orchestration     · A
├── Security/                       applied cryptography
│   └── SEC_caesar/                 cryptography challenges                 · A
└── SideProjects/                   self-directed practice
    ├── BotDiscord_JavaScript/      Discord bot relaying Git pushes
    ├── BrickBreaker_Python/        Brick Breaker, the Atari classic
    ├── Pong_Python/                Pong, ball physics and collision
    ├── JeuDeOie_Python/            Game of the Goose, the board game
    ├── HangMan_Java/               Hangman, word-guessing game
    ├── HangMan_Ruby/               Hangman again, this time in Ruby
    └── RockPaperScissors_Java/     Rock Paper Scissors vs the computer

Tek2/   2019-2020 · 40 projects · C++, assembly, networks, concurrency and functional code
├── Internship/                     front-end warm-up
│   ├── React-Carnet-Book/          React address book
│   ├── React-Gallery-Site/         React image gallery
│   ├── React-Admin-Side/           React admin panel
│   └── Vue-To-do/                  Vue to-do list
├── CPPool/                         the second bootcamp, in C++
│   ├── cpp_d01_2019/               warming back up in C                    · B
│   ├── cpp_d02m_2019/              pointers                                · B
│   ├── cpp_d02a_2019/              data structures                         · B
│   ├── cpp_d03_2019/               string library                          · B
│   ├── cpp_d06_2019/               first classes                           · B
│   ├── cpp_d07m_2019/              Resistance is Futile                    · B
│   ├── cpp_d07a_2019/              SKAT                                    · B
│   ├── cpp_d08_2019/               operators and canonical form            · B
│   ├── cpp_d09_2019/               inheritance                             · B
│   ├── cpp_d10_2019/               abstract classes                        · B
│   ├── cpp_d13_2019/               polymorphism and interfaces             · B
│   ├── cpp_d14m_2019/              casting                                 · B
│   ├── cpp_d14a_2019/              exceptions                              · B
│   ├── cpp_d15_2019/               templates                               · B
│   ├── cpp_d16_2019/               the standard library                    · B
│   ├── cpp_d17_2019/               generic algorithms                      · B
│   ├── cpp_rush1_2019/             SKL, objects in pure C                  · B
│   ├── cpp_rush2_2019/             Santa Claus                             · B
│   └── cpp_rush3_2019/             MyGKrellm                               · B
├── PSU/                            memory, instrumentation and Zappy
│   ├── PSU_malloc_2019/            malloc, memory allocator                · A
│   ├── PSU_nmobjdump_2019/         my_nm and my_objdump, ELF reading       · A
│   ├── PSU_strace_2019/            strace, system call tracing             · A
│   ├── PSU_ftrace_2019/            ftrace, function call tracing           · A
│   └── PSU_zappy_2019/             Zappy, networked world simulation       · C
├── JAM/                            48-hour game jam
│   └── JAM_space_2019/             Epitech JAM, Space                      · D
├── Assembly/                       x86-64
│   └── ASM_minilibc_2019/          MiniLibC, libc calls in assembly        · A
├── Functional/                     a change of programming model
│   ├── FUN_wolfram_2019/           Wolfram, cellular automaton             · A
│   └── FUN_imageCompressor_2019/   k-means in Haskell                      · A
├── Network/                        sockets and protocols
│   ├── NWP_myftp_2019/             myFTP, FTP server                       · A
│   └── NWP_myteams_2019/           myTeams, collaborative messaging        · A
├── OOP/                            concurrency, design and a year-end project
│   ├── OOP_arcade_2019/            Arcade, retro gaming platform           · B
│   ├── CCP_plazza_2019/            Plazza, concurrent pizzeria             · A
│   ├── OOP_nanotekspice_2019/      NanoTekSpice, logic simulator           · B
│   └── OOP_indie_studio_2019/      Indie Studio, 3D Bomberman              · A
└── CNA/                            numerical analysis and trading
    ├── CNA_trade_2019/             Trade, crypto trading bot               · C
    └── CNA_groundhog_2019/         Groundhog, temperature indicators       · C

Tek1/   2018-2019 · 50 projects · C foundations, algorithms, graphics and Unix systems
├── CPool/                          the entry bootcamp
│   ├── CPool_Day01_2018/           the Unix environment                    · B
│   ├── CPool_Day02_2018/           shell scripting                         · B
│   ├── CPool_Day03_2018/           first steps in C                        · B
│   ├── CPool_Day04_2018/           pointers                                · B
│   ├── CPool_Day05_2018/           recursion                               · B
│   ├── CPool_Day06_2018/           strings                                 · B
│   ├── CPool_Day07_2018/           libmy and arguments                     · B
│   ├── CPool_Day08_2018/           compilation and allocation              · B
│   ├── CPool_Day09_2018/           structures                              · B
│   ├── CPool_Day10_2018/           Makefile and do_op                      · B
│   ├── CPool_Day11_2018/           linked lists                            · B
│   ├── CPool_Day12_2018/           file descriptors                        · B
│   ├── CPool_Day13_2018/           discovering CSFML                       · B
│   ├── CPool_rush1_2018/           Rush 1, The Squares                     · B
│   ├── CPool_rush2_2018/           Rush 2, What language is this?          · B
│   ├── CPool_workshoplib_2018/     WorkshopLib, building libmy             · B
│   ├── CPool_Tree_2018/            Tree, ASCII fir tree                    · B
│   ├── CPool_match-nmatch_2018/    match and nmatch                        · B
│   ├── CPool_bistro-matic_2018/    Bistro-matic                            · B
│   ├── CPool_evalexpr_2018/        EvalExpr                                · B
│   ├── CPool_infinadd_2018/        InfinAdd, big number addition           · B
│   └── CPool_finalstumper_2018/    Final Stumper, rush 3                   · B
├── Maths/                          applied mathematics in C
│   ├── 101pong_2018/               101pong, vectors and bounces            · A
│   ├── 102architect_2018/          102architect, transformations           · A
│   ├── 103cipher_2018/             103cipher, matrix cipher                · A
│   ├── 104intersection_2018/       104intersection, lines and quadrics     · A
│   └── 105torus_2018/              105torus, mathematics of the torus      · A
├── CPE/                            algorithms in C
│   ├── CPE_matchstick_2018/        Matchstick                              · A
│   ├── CPE_pushswap_2018/          Push Swap                               · A
│   ├── CPE_getnextline_2018/       Get Next Line                           · A
│   ├── CPE_dante_2018/             Dante's Star                            · B
│   ├── CPE_lemin_2018/             Lem-in, A-maze-d                        · B
│   └── CPE_corewar_2018/           Corewar                                 · B
├── PSU/                            Unix systems programming
│   ├── PSU_my_ls_2018/             my_ls                                   · B
│   ├── PSU_navy_2018/              my_navy, battleship over signals        · B
│   ├── PSU_my_sokoban_2018/        my_sokoban                              · B
│   ├── PSU_my_printf_2018/         my_printf                               · B
│   ├── PSU_minishell1_2018/        Minishell 1                             · A
│   ├── PSU_tetris_2018/            Tetris                                  · B
│   ├── PSU_minishell2_2018/        Minishell 2                             · A
│   └── PSU_42sh_2018/              42sh, full shell                        · A
├── Graphics/                       2D games in C
│   ├── MUL_my_hunter_2018/         My Hunter                               · A
│   ├── MUL_my_runner_2018/         My Runner                               · A
│   ├── MUL_my_defender_2018/       My Defender, tower defense              · A
│   └── MUL_my_rpg_2018/            My RPG                                  · A
└── Stumper/                        timed algorithm challenges
    ├── CPE_solostumper_1_2018/     Solo 1, alphabetical sorting
    ├── CPE_solostumper_2_2018/     Solo 2, palindrome
    ├── CPE_duostumper_1_2018/      Duo 1, ASCII fractal
    ├── CPE_duostumper_2_2018/      Duo 2, Boggle
    └── CPE_duostumper_3_2018/      Duo 3, Caesar cipher
Committed source ~205,000 lines across 3,877 files, in 15 languages
Heaviest C (116k lines) · C++ (44k) · JavaScript (32k)
Also here Python, Haskell, Kotlin, Go, Rust, Java, Ruby, x86-64 assembly, GLSL
Team projects 23 of 108
Graded 91 of 108 · 33 A, 53 B, 3 C, 2 D · GPA 3.57/4

Line counts exclude vendored libraries such as the Irrlicht and SFML headers shipped inside Indie Studio.

A few representative projects

  • R-Type → a multiplayer shoot’em up on an entity-component engine written from nothing. The engine had to be designed before the game existed: TCP carries anything that must arrive exactly once, UDP carries the state stream, and client-side prediction covers the gap.
  • Zia → an HTTP server whose parser, handlers, TLS layer and CGI support are all hot-loaded shared libraries. The core has to define its hook points before knowing what will ever hook into them.
  • 42sh → a Unix shell built by a team: command tree, pipes, redirections, aliases, history, completion, and terminal line editing written by hand rather than borrowed from readline.
  • Arcade → games and renderers both dlopened at runtime and swappable mid-play. The abstraction had to be thin enough to fit an SFML window and a terminal cell at the same time.
  • My RPG → a 2D role-playing game in 9,200 lines of C with no engine and no objects: two zones, 500 enemies, a skill draft and a boss. Every screen is a plain render loop that calls the next one, so the state machine is the C call stack, and the dungeon runs on top of the beach's frame until it unwinds.
  • Wolfram → a cellular automaton in Haskell on a line that is infinite in both directions. What reaches the left edge now depends on cells that sat off-screen ten generations ago, so the window is never allowed to become the state: every generation is computed two cells wider than the last, and clipping happens once, at print time.

Use the official Epitech environment

The root Dockerfile is a deliberately thin wrapper around epitechcontent/epitest-docker, the image published from Epitech's public epitest-docker repository for automated project testing. It brings the maintained Epitech packages for the C, C++, systems and web curriculum into one consistent shell without copying the archive into the image. The matching .dockerignore also keeps the build context down to the wrapper itself, even though this repository contains more than a hundred source trees.

docker build --platform linux/amd64 -t school-epitech .
docker run --rm -it --platform linux/amd64 \
  -v "$PWD":/workspace -w /workspace school-epitech

The --platform option also makes the image usable through emulation on Apple Silicon; it can be omitted on an x86-64 Linux host. Once inside the container, enter a project and follow its own Build & run section, for example:

cd Tek1/PSU/PSU_42sh_2018
make
./42sh

The image tag can be changed without editing the file:

docker build --build-arg EPITECH_IMAGE=epitechcontent/epitest-docker:devel \
  --platform linux/amd64 -t school-epitech .

This is Epitech's current automated-test environment, not a frozen snapshot of every workstation used between 2018 and 2023. Graphical, audio, Android and multi-service projects may still require display/device forwarding or the project-specific containers documented in their own README.

License

See the LICENSE file.

About

Curated archive of 108 software engineering projects — from C/Unix foundations to networking, DevOps, game engines and IoT.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages