Note: Most projects were completed in pairs with Euxem.
To clone a part of this repository, use my sparse-clone script.
Info: some projects are stored in a separate repository:
Or in their own repository, accessible via a link further down this page.
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
C 72 599 979 11253
Python 13 190 317 2079
C/C++ Header 20 212 210 471
SQL 4 8 21 202
make 3 59 15 89
Markdown 3 49 0 116
Java 70 753 2587 13435
-------------------------------------------------------------------------------
SUM: 185 1870 4129 27529
-------------------------------------------------------------------------------
Computer methods and programming techniques
Blackjack: a CLI blackjack game with bots and game options.
Algorithms and functional programming
Checkers: a simple checkers game on a hexagonal board in CLI.
System and programming environment
Cow: A program based on the cowsay CLI application. It allows you to display a cow with a custom message and has some options and games.
Algorithms and imperative programming
- APP2 - Curiosity: instruction interpreter for a robot that moves in a 2D terrain (testing and terrain generation in INF304)
- APP3 - Phylogenetic Tree: creation, reading, and manipulation of phylogenetic trees
Basics of software development: modularization, testing
INF304 follows INF301/APP2 by addressing terrain generation and interpreter testing.
Introduction to logic
INF402 - Project: a program that solves part of the "Hashiwokakero" game (or "Bridges" for short) using computer vision to understand the board and logic to solve the problem. Implementation of a simple WalkingSAT.
Relational data management and applications
INF403 - Project: database management application for a company producing and selling liquid hydrogen.
Software project
INF404 - Project: interpreter for a language we created, which aims to add a functional programming paradigm to the graphical language dot, which is only declarative. Stored in my partner's repository, Euxem.
Software project
ARM-SIMULATOR: this project aims to develop a simulator for a subset of the ARMv5 instruction set. The simulator is designed to execute machine code written for the ARMv5 instruction set on a host machine with a different instruction set. Although the main target host architecture is Intel x86 (32-bit) or x86-64 (64-bit), the simulator code is written in a portable manner and can be compiled and run on other architectures. Project completed in a team of 6 people.
Semester projects
MINI-SHELL: creation of a shell capable of managing program execution and internal commands, putting tasks in the background and bringing them to the foreground or suspending them.
FTP: FTP server and client capable of handling multiple connections, with load balancing between multiple servers using a master-slave architecture.
Semester project
Project: Project for refactoring and improving an existing code base. The goal was to apply good development practices and use various tools to improve code quality, security, and performance. Among the improvements made: project modularization, creation of makefiles, implementation of unit tests with CUTest, correction of memory leaks with Valgrind and ASAN, performance optimization with gprof, and addition of documentation with Doxygen. The project also integrated advanced techniques such as the use of static and dynamic libraries, code coverage with gcov, and dynamic analysis with AFL.
KUBE: Java implementation of a board game with a Swing graphical interface, artificial intelligence to compete against the computer, and network integration for online play.
Semester project
Project: Implementation of a compiler for a subset of Java (Mini Java) that generates x86-64 assembly code. The compiler supports object-oriented programming (classes, inheritance, method dispatch), control structures (if, for, return), primitive types (integers, booleans, null), string operations, method calls, and expressions. The project is structured in several modules handling the different compilation phases: AST, lexer/parser, type checking, and code generation. The compiler ensures correct memory management with object allocation on the heap and construction of vtables for dynamic method dispatch.