A selection of academic, technical, and personal projects.
End-to-end quantitative finance pipeline: downloading historical market data, building and comparing multiple trading strategies (Buy & Hold, Momentum, Mean Reversion, Moving Average Crossover, Risk Parity, Equal Weight Portfolio), and computing key performance metrics — annual return, volatility, Sharpe ratio, Sortino ratio, maximum drawdown, Value at Risk, beta, and alpha — to produce a professional portfolio management report.
Set up of an Ubuntu server with Nextcloud (personal NAS) and WireGuard for secure remote access.
Implementation of the Hanabi game and extensions. Ranked 2nd out of 15 teams.
Implementation and comparison of game strategies for Dots & Boxes, from random and greedy approaches to Minimax, Alpha-Beta, and Monte Carlo Tree Search. Ranked 2nd out of 10 teams in the final tournament.
Study of the fairness of a ResNet18 model for classifying chest X-rays from the NIH Chest X-ray 14 dataset. Bias identification and interpretation.
Implementation of a Micro Go compiler as part of a semester-end project for the Compilation module.
Python library of directed graphs (OpenDigraph) applied to the modeling and evaluation of acyclic Boolean circuits. Implementation of graph algorithms (Dijkstra, topological sort, longest path), circuit synthesis from propositional formulas, and case studies (half-adder, adders, Hamming code verification).
Image compression codecs. Ranked 4th out of 16 teams.
Extension of a 3D maze engine in Processing (Java) to procedurally generate two models: a pyramid built by stacking mazes of decreasing size with a desert floor modulated by Perlin noise, and an articulated mummy built by revolving quad-strips (bands with variable color and radius) organized as a PShape(GROUP). Lighting and shader handling based on the character's position (dark interior / bright exterior), random mummy movement within the maze, and bonus features (dynamic compass, level switching).
Java digital adaptation of the cooperative board game Forbidden Island, with a Swing graphical interface. MVC architecture (board and zone model, keyboard/mouse interaction controller, graphical view) with inheritance for special tiles (Temple, Helipad), progressive island flooding, artifact collection, turn-based system, and role abilities (Engineer, Pilot). Polished interface: animated pawns, dynamic images based on zone state, sound handling.
Lecture notes co-written with the instructor of the OLMA252 module at Université Paris-Saclay, intended for the entire LDD2 cohort. The document covers Euclidean spaces, orthogonality and orthonormal bases, isometries and adjoints, determinants, and the reduction of endomorphisms (eigenvalues, characteristic polynomial, triangularization, Cayley-Hamilton theorem), with an appendix reviewing linear algebra 1 and corrected comprehension questions after each lecture. Contribution: proofreading and correction of the document.
Participation in the Orsay Mathematics Marathon, an annual problem-solving competition organized by Université Paris-Saclay (Laboratoire de Mathématiques d'Orsay, funded by the Fondation Mathématique Jacques Hadamard). Solved 2 problems of the full marathon, earning the title of 'Marathonien fuchsien arithmétique de deuxième espèce.'
OCaml implementation of a text file compressor/decompressor using Huffman coding, with binary file handling, a priority queue for tree construction, and statistics features (compression ratio, character frequencies). Tested on large corpora (Bible, Quran) with a compression ratio of 61.85%.
C implementation of clients and servers communicating over the TCP and UDP protocols, with an interactive launcher to choose the protocol, role, and a developer mode. Multi-threaded TCP server (console thread for CLEAR/SHUTDOWN commands and a communication thread), connection/disconnection handling, and socket manipulation via socket(), bind(), connect(), send(), and recv().
Alumni and student network from Lycée Blaise Pascal in Orsay. Personalized tutoring, design of educational materials, exam and admissions prep, networking...
Mathematical study of mazes viewed as combinatorial structures: enumeration of n×m pseudo-mazes, computation of the maximum number of walls by recurrence, a general formula for the cardinality of the set of pseudo-mazes, and proof of the existence and uniqueness of a path to the exit in a maze. Establishment of necessary and sufficient conditions (number of walls, connectivity) for a pseudo-maze to be a true maze.
MATh.en.JEANS research workshop (Faculté des Sciences d'Orsay, supervised by Pierre Pansu and Aurélien Perdriaud) exploring an open question: multiplication is distributive over addition, but does an operation distributive over multiplication exist? Starting from the idea that the logarithm turns multiplication into a disguised addition, exploration of new composition laws built by analogy, and study of their algebraic properties (distributivity, induced structures).
C++ implementation of the Jarnac word game: game engine, controller, and text-mode view, compiled via CMake. Study of dictionary search method complexity and design of a word-forming AI weighted by length and difficulty, optimized through dictionary reduction and search restricted to anagrams of board words. Extensions: language choice (French/English), board size, word length constraints, multiplayer mode, and AI vs AI.