Daniel D. Johnson

I am an AI Resident at Google Brain Montréal. My research interests include:
  • applying deep learning to compositional and structured data (such as trees, sets, and graphs),
  • continuously relaxing classical algorithms into end-to-end differentiable layers,
  • designing more expressive "differentiable" programming languages and frameworks to do non-traditional machine learning research.

Recently, I've been working on two sides of the intersection between programming languages and machine learning: on the one hand, how can we use deep learning to help people write code more easily and with fewer bugs, and on the other hand, how can we design programming languages that reduce the cognitive load of building deep learning models? See my research page for more information.

In 2018-2019, I worked on applied machine learning at Cruise. Before that, I was an undergraduate CS/Math joint major at Harvey Mudd College, where I did research on applying deep learning to music, and worked as a math tutor in the Academic Excellence tutoring program at HMC.

In my free time, I enjoy playing board games, trying out indie video games (current recommendations: Baba is You, Outer Wilds), hiking, cooking, and working on a variety of side projects.


  • "Learning Graph Structure With A Finite-State Automaton Layer" (arXiv) has been accepted to NeurIPS 2020 as a spotlight presentation!
  • In August 2020, I added extensible record and variant types to dex-lang (PRs 1, 2). I'm excited to continue exploring connections between records and named axes in strongly-typed multidimensional-array code.
  • I presented "Learning Graph Structure With A Finite-State Automaton Layer" at the Graph Representation and Beyond workshop at ICML 2020.
  • In October 2019, I moved to Montréal for the AI Residency.
  • In December 2018, my HMC Mathematics Clinic group presented a method for sound separation using automatic differentiation at NeurIPS 2018.