Contribute to ML4Code

Machine Learning on Source Code

The billions of lines of source code that have been written contain implicit knowledge about how to write good code, code that is easy to read and to debug. A recent line of research aims to find statistical patterns in large corpora of code to drive new software development tools and program analyses.

This website and the accompanying article surveys the work in this emerging area.

Like writing and speaking, software development is an act of human communication. At its core, the naturalness of software employs statistical modeling over big code to reason about rich variety of programs developers write. This new line of research is inherently interdisciplinary, uniting the machine learning and natural language processing communities with software engineering and programming language communities.

🏷 Browse Papers by Tag

API GNN Transformer adversarial autocomplete benchmark bimodal clone code generation code similarity compilation dataset decompilation defect deobfuscation documentation dynamic edit education evaluation feature location fuzzing grammar information extraction language model logging migration naming optimization pattern mining pretraining program analysis refactoring repair representation review search static analysis style summarization survey synthesis test generation tool topic modeling traceability types variable misuse verification

About This Site

This site is an experiment: a living literature review that allows you explore, search and navigate the literature in this area, by following a taxonomy based on the underlying design principles of each model. The full survey is available as a research paper. Please cite as

  title={A survey of machine learning for big code and naturalness},
  author={Allamanis, Miltiadis and Barr, Earl T and Devanbu, Premkumar and Sutton, Charles},
  journal={ACM Computing Surveys (CSUR)},


This research area is evolving so fast that a static review cannot keep up. But a website can! We hope to make this site a living document. Anyone can add a paper to this web site, essentially by creating one Markdown file. To contribute, open a pull request in GitHub, by following these instructions for contributing.


The core survey and the original taxonomy was created by

Contributors to the website

This website accepts external contributions. Please, feel free to add your name below, once you contribute to this website. A comprehensive list can be found here.