Samuel Berthelot

AI engineering student at EPITA, on exchange in Tokyo. I reconstruct images from very little data, and I work on compilers and developer tools.

Looking for a 6-month AI engineering internship in Tokyo from March 2027.

Simulated data

0.50 photons per pixel
  • Mg (magnesium)
  • Si (silicon)
  • Fe (iron)
Simulated data. A made-up meteorite section, imaged one X-ray photon at a time. Left of the line: raw counts. Right: a reconstruction guided by a sharp electron image of the same area, the idea behind my research at LRE. Drag the line or change the exposure.

Selected work

Hyperspectral reconstruction

LRE, EPITA Research Laboratory

Jan to Jul 2026

I reconstructed hyperspectral cubes from SEM-EDS images of meteorites, where most voxels hold zero or one photon. I showed that the usual data-fidelity term is degenerate at these counts and replaced it with a hard box constraint, which makes the problem convex with no trade-off weight. A regularizer guided by the electron image keeps grain boundaries sharp. I ran it in PyTorch on a GPU, on a real chondrite cube of1024 × 1024 pixels × 2048 energy channels.

Results on real and synthetic data
MetricDataResult
PSNR against the ground truthSynthetic, Poisson noise+1.5 dB over raw counts
Spectral angle (SAM)Synthetic, Poisson noise22.3° to 18.9°
Spectral dispersion between neighboring pixelsReal chondrite cube65% lower

Read the case study

Compiler engineering

Faveod, Paris

Internship, Sep 2025 to Jan 2026

Summer job, Jul to Aug 2026

I worked on Faveod's multi-source compiler, first as an intern, then as a summer hire in 2026. I fixed bugs in it and optimized it, cutting pipeline time from 17 to 9 minutes (47% less).

Pipeline time
  • Before: 17 min
  • After: 9 min
  • Made compilation in the Roslyn-based C# engine 3x faster.
  • Worked on switching from the whitequark parser gem to Prism, which made Ruby parsing 20% faster.
  • Made the pretty-printer smarter, along with the system that decides where parentheses go in the generated code.
  • Moved the generated code from Node.js to Deno for its native TypeScript, strict type checking and built-in tooling (formatter, linter, test runner), which meant making the compiler emit much stricter TypeScript.
  • Shortened the test-suite runtime.

The codebase is private.

Open source

RuboCop: 4 merged pull requests

tree-sitter-ruby: maintained fork

Four merged pull requests to RuboCop, the Ruby linter and formatter: push and pop directives for disabling cops in a scope, then three fixes.

I also maintain a fork of tree-sitter-ruby, the Ruby grammar for the tree-sitter parser generator, with Ruby 3.0+ syntax and parser fixes. The fork on GitHub.

Read about the contributions

Projects

Course and personal projects with public code.

Genetic algorithm for Snake

TIPE, classes préparatoires, 2023 to 2024, updated in 2026

Evolves neural networks that learn to play Snake with a genetic algorithm. It started as my TIPE, the research project presented at the end of French classes préparatoires; the 2026 version adds tests and measured results.

Python, NumPy, pygame, pytest

Absenteeism at work

EPITA time series course project, team of two, 2026

Asks whether monthly absence hours at a courier company in Brazil can be forecast (740 absences, July 2007 to July 2010), then explains and classifies absence durations instead.

Python, pandas, statsmodels, scikit-learn, Jupyter, LaTeX

More detail on each project

School projects, code kept private

  • Tiger compiler C++

    A compiler for the Tiger language.

  • 42sh C

    A POSIX shell.

  • MyMalloc C

    A malloc implementation.

  • MyFind C

    A reimplementation of the find command.

  • IDVOC Go, Docker

    Microservices in Go, run with Docker.

  • JWS Java, Quarkus

    A REST backend built with Quarkus.

About

I came to computer science through the French classes préparatoires (MP2I, then MPI): two years of intensive mathematics, physics and computer science. At EPITA I chose the artificial intelligence major.

Since September 2026 I have been in Tokyo for an exchange semester at Shibaura Institute of Technology, and I am learning Japanese. I also write and review contest problems for Prologin, the non-profit behind France's national programming contest for young people.

I am looking for a 6-month AI engineering internship in Tokyo from March 2027, in computer vision, multimodal or generative models, or ML tooling.

Experience and education

  1. Sep 2026 to Jan 2027

    Exchange semester

    Shibaura Institute of Technology, Tokyo, Toyosu campus

  2. Jul to Aug 2026

    Software engineer (summer job)

    Faveod, Paris

  3. Jan to Jul 2026

    Student researcher, inverse problems and image reconstruction

    LRE, EPITA Research Laboratory

  4. Since Sep 2025

    Member and problem setter

    Prologin, France

  5. Sep 2025 to Jan 2026

    Software engineer intern, compilers

    Faveod, Paris

  6. 2024 to 2027

    Engineering degree, computer science

    EPITA, France

  7. 2022 to 2024

    Classes préparatoires MP2I and MPI

    Lycée Camille Guérin, Poitiers

Languages

French
Native
English
Professional working proficiency (TOEIC Listening and Reading 860/990, May 2026)
Japanese
Elementary, studying for the JLPT N5

Skills

Programming languages
Python, C, C++, Rust, Ruby, Go, Java, SQL, Bash
Machine learning and numerics
PyTorch, NumPy, Hugging Face Transformers, Jupyter
Methods
Inverse problems, convex optimization, image reconstruction, parsing and static analysis
Tools
Git, Docker, LaTeX

Contact

Email is the fastest way to reach me, and I reply in English or French.