Abstract: In this tutorial, we present an overview of the field of machine programming (MP), which aims to automate certain aspects of software development. The goal of MP is not to replace programmers; instead, it is meant to help improve software developer productivity and software quality across many dimensions (e.g., correctness, performance, security, maintainability, etc.).
We begin our discussion with ""The Three Pillars of Machine Programming"" where the term machine programming (MP) was coined, jointly published by Intel Labs and MIT. From there, we cover the basics elements of MP, how it is uniquely different than pure machine learning or ML4Code. We close with a discussion and live demonstration of an MP system, called MP-CodeCheck, that detects code anomalies using advanced self-supervised learning and programmable heuristics that provide iterative refinement and human-machine collaboration.
Bio: Justin Gottschlich is the Founder, CEO & Chief Scientist of Merly, Inc. (http://merly.ai), a company aimed at making software developers more productive using state-of-the-art machine programming systems. Justin also has an academic appointment as an Adjunct Assistant Professor at the University of Pennsylvania. Before founding Merly, Justin was a Principal AI Scientist and the Founder & Director of Machine Programming Research at Intel Labs. In 2017, he co-founded the ACM SIGPLAN Machine Programming Symposium (MAPS) and now serves as its Steering Committee Chair. Justin also serves on the 2020 NSF Expeditions advisory board Understanding the World Through Code led by MIT Prof. Armando Solar-Lezama. Justin received his PhD in Computer Engineering from the University of Colorado-Boulder in 2011 and has 40+ peer-reviewed publications, 50+ issued patents, with 100+ patents pending. Justins research has been highlighted in venues like The New York Times, Communications of the ACM, MIT Technology Review, and The Wall Street Journal.