Yusuf Malik Durmus

M.Sc. student in Computer Science at TUM · B.Sc. Computer Science & Statistics, LMU Munich

I work on reinforcement learning and the software around it: preference learning, training pipelines, simulation, and the tooling that makes experiments reproducible.

Projects

Preference-Guided Curriculum Discovery for Robust RL

Bachelor's thesis · LMU Munich, Chair of Mobile and Distributed Systems · 2026

Reinforcement learning agents generalize better when they train on well-chosen environments. I used an LLM (Gemini) to compare about 88,000 pairs of rendered levels by difficulty, validated the labels against human judgment, and trained a neural network ensemble that ranks new levels.

I then extended a state-of-the-art curriculum algorithm (Sampling for Learnability) with this difficulty model, new selection rules and an adaptive difficulty target, and evaluated it in about 200 GPU-accelerated training runs with paired statistical tests.

  • JAX / Flax
  • Reinforcement learning
  • Preference learning
  • Gemini on Vertex AI
  • Slurm
Six maze-like navigation levels: the top row is ranked easy by the learned model, open maps with the goal close to the start; the bottom row is ranked hard, cluttered maps with long routes.
Levels ranked by the learned difficulty model: easiest (top) and hardest (bottom), with start and goal marked.

jax-keyguard: Catching PRNG Key Reuse in JAX

Open-source Python package · Personal project · 2026

In JAX, reusing a random key silently repeats the same "random" numbers. I built a tool that finds this mistake in two ways: a static checker that follows keys through branches, loops and aliases without running the code, and a runtime check that raises an error the moment a key is reused.

It covers the older PRNGKey keys that JAX's own check skips. Run on the JAX repository, it found an example program that draws every layer's weights and biases from the same key.

  • Python
  • JAX
  • Static analysis
  • pytest / flake8 plugins
  • PyPI
rng = jax.random.PRNGKey(0)
w = jax.random.normal(rng, (m, n))
b = jax.random.normal(rng, (n,))
KG001 PRNG key 'rng' reused:
already consumed by
jax.random.normal on line 173
The reuse it found in JAX's own MNIST example.

RLHF-Gym: Reinforcement Learning from Human Feedback

University software engineering project · LMU Munich · 2023–2024 · Grade 1.0

A complete pipeline that teaches robotic agents in MuJoCo from human preferences instead of a hand-written reward. I led the algorithm work: implementations of PEBBLE and SURF on top of Soft Actor-Critic, a learned reward model with semi-supervised learning and data augmentation, and ensemble-based query selection.

The project includes a web interface where people compare two agent videos, a thread-safe backend that feeds their answers into training, and training jobs on the university Slurm cluster.

  • PyTorch
  • SAC
  • Flask
  • MuJoCo
  • Slurm
The feedback interface: two agent videos side by side.
The feedback interface: a person picks the better of two agent behaviours.

Inferno Swarm: Autonomous Multi-Agent Simulation

Personal project · 2025

A C++17 simulation of autonomous agents with emergent swarm behaviour. I implemented the steering behaviours (separation, alignment, cohesion) and force accumulation from scratch, and a cellular-automaton environment in which fire spreads and agents switch between flocking and extinguishing.

  • C++17
  • SFML
  • CMake / vcpkg
Inferno Swarm: a fire spreading across a green grid while agents gather around it.
A fire spreads across the grid while the agents switch between flocking and extinguishing.

Supermasks in Superposition: Continual Learning

Scientific seminar paper · LMU Munich · Grade 1.0

A term paper analysing how a single fixed network can learn many tasks in sequence without forgetting, by selecting task-specific subnetworks instead of changing weights.

Experience

Education

Skills

Machine learning
Reinforcement learning (PPO, SAC, RLHF), deep learning, preference learning, curriculum learning, statistical evaluation
ML frameworks
PyTorch, JAX / Flax / Optax, NumPy, pandas, Matplotlib, Hugging Face Datasets, TensorFlow (basic)
Simulation & RL tools
Gymnasium, MuJoCo, JaxMARL, XLand-MiniGrid, Weights & Biases
Languages
Python, Java, SQL, C++, JavaScript, Bash
Backend & data
FastAPI, Flask, REST APIs, SQLite, relational databases
DevOps & tools
Git, GitLab CI, Docker, Linux, Slurm, cloud GPUs, Poetry, uv, CMake, LaTeX
Process
Agile Scrum, Jira
Spoken
German, Turkish (native); English (C2)