Skip to main content

Machine Learning for Programming

Veselin Raychev ( ETH Zurich )

The increased availability of massive codebases ("Big Code") creates an exciting opportunity for new kinds of programming tools based on probabilistic models.  Enabled by these models, tomorrow's tools will provide probabilistically likely solutions to programming tasks that are difficult to solve with traditional techniques.

In this talk, I will present a new approach for building such tools: phrasing the problem as a structured prediction and leveraging the advances in probabilistic graphical models such as conditional random fields.  Using this formulation, our work enables new types of programming applications not possible before.

As an example, I will discuss JSNice (, a system that automatically de-minifies JavaScript programs by predicting statistically likely variable names and types.  Since its release a few months ago, JSNice has become a popular tool in the JavaScript community and is regularly used by thousands of developers worldwide.

Veselin Raychev ( is a third year PhD student in the Department of Computer Science at ETH Zurich.  His research interests are in program analysis, machine learning and algorithms.  Before joining ETH, he worked at Google where he led a team responsible for the public transportation directions in Google Maps.

Share this: