Talk Info

Satish Chandra (Facebook, USA)

Talk title: Bringing ML to the Developer

Abstract: Efficiency and accessibility of machine learning technology are active areas of investment for many research and product groups. Unfortunately, while machine learning has the potential to fundamentally improve how software is constructed, opportunities to leverage machine learning to improve more conventional developer tools (languages, compilers, and IDEs for example) have largely gone untapped.

At Facebook, our developer infrastructure team is on a mission to rethink and retool Facebook’s developer toolchain by applying machine learning at every layer in our stack. Our goal is to make our developers more productive, and our processes and infrastructure more efficient, by integrating ML into our programming languages and developer tools (such as IDEs, version control, or continuous integration systems) in novel ways.

This talk will describe some of the work our team has been doing to improve developer efficiency and resource utilization at Facebook - from updating the Hack programming language to support probabilistic programming techniques, to developing a new suite of ML-driven developer tools. I’ll also touch upon future opportunities we see to optimize or auto-tune other common pieces of developer infrastructure.

Bio: Satish Chandra obtained a PhD from the University of Wisconsin-Madison in 1997, and a B.Tech from the Indian Institute of Technology-Kanpur in 1991, both in computer science. From 1997 to 2002, he was a member of technical staff at Bell Laboratories, where his research focused on program analysis, domain-specific languages, and data-communication protocols. From 2002 to 2013, he was a research staff member at IBM Research, where his research focused on bug finding and verification, software synthesis, and test automation. His work on bug finding shipped in IBM’s Java static analysis product, and his work on test automation was adopted in IBM’s testing services offering. From 2013 to 2016, he worked at Samsung Research America, where he led the advanced programming tools research team. His work on memory profiling of web apps was included in Samsung’s Tizen IDE. In 2016, he started working at Facebook. He is an ACM Distinguished Scientist.

Prem Devanbu (UC Davis, USA)

Talk title: On the Naturalness of Software

Abstract: Progamming languages, like their “natural” counterparts, are rich, powerful and expressive. But while skilled writers like Zadie Smith, Shakespeare, and Rushdie delight us with their elegant, creative deployment of the power and beauty of English, most of what us regular mortals say and write everyday is Very Repetitive and Highly Predictable.

This predictability, as most of us have learned by now, is at the heart of the modern statistical revolution in speech recognition, natural language translation, question-answering, etc. We will argue that in fact, despite the power and expressiveness of programming languages, most «Software» in fact is «also» quite repetitive and predictable, and can be fruitfully modeled using the same types of statistical models used in natural language processing. We examine the special repetitive structure of code in some detail, and describe methods to exploit it; we show that deep-learning models, which work well for natural language, don’t work as well for code. We then also show some sample applications, to code completion, and JavaScript de-minification,

Bio: Prem Devanbu received his B.Tech from IIT Madras, and his PhD from Rutgers University, is a CS Faculty as UC Davis. Prem has program-chaired ICSE (in 2010) and FSE (in 2006) and has been associate editor for ACM TOSEM, IEEE TSE, and ESE Journal. He has won 4 ACM SIGSOFT Distinguished paper awards, best paper awards at ICSE NIER, ASE and MSR, and the 10-year most-influential paper award at MSR 2016. Three of his papers appear in CACM Research Highlights, including one on the Naturalness work.

Na Meng (Virginia Tech, USA)

Talk Title: Clone Detection and Maintenance with AI Techniques

Abstract: Code clones present challenges to software maintenance. When developers fix a bug in one code snippet, they may also want to fix the same bug in all clones of the code snippet, and thus need clone detection tools to find those clones. If multiple clones are similarly updated again and again, developers may also refactor the clones to reduce repetitive maintenance effort. Existing clone detection tools were built on carefully designed algorithms. However, these manually defined algorithms work better for certain kinds of clones, but worse for the others. We are curious whether it is possible to automatically characterize the similarity between clones, and then leverage the characteristics to detect clones. Besides, existing clone detection tools usually find many clones in a program, but only a small portion of the clones are hard-to-maintain and require refactoring effort. We are also curious whether it is feasible to characterize the clones refactored by developers, and only report clones that are likely to be refactored by developers. For this talk, we will discuss our exploration of a deep learning-based clone detection approach, and a machine learning-based clone recommendation approach for refactoring.

Bio: Na Meng is an assistant professor in the Computer Science department of Virginia Tech. Her research interests include Software Engineering and Programming Languages. She focuses on conducting empirical studies on software bugs and fixes, and investigating new approaches to help developers comprehend programs and changes, to detect and fix bugs, and to recommend code changes automatically.

John Micco (Google, USA)

Talk Title: Intelligent Development at Google

Abstract: We are always working on improving the efficiency of our developers’ core workflows by providing better and faster tooling and processes for testing their code submissions. This talk will describe some of the most interesting problems (such as scalability and flaky tests) that we are finding in the developer workflow and how we are working to improve core testing workflows for all Google engineers.

Bio: John Micco is a senior manager at Google focusing on the internal Continuous Integration Testing and Continuous Deployment systems. He has been working in the software industry for 30 years and working on CI / CD solutions for the last 13 years.

Martin Rinard (MIT, USA)

Talk title: Three Intelligent Systems at the Intersection of Machine Learning and Software Engineering

Wolfram Schulte (Facebook, USA)

Talk Title: Make Data-driven Decisions Faster with Real-time Stream Processing

Abstract: Facebook can move fast and iterate because of its ability to make data-driven decisions. Data from its stream processing systems provides real-time analytics and insights. In this talk, Wolfram Schulte covers the difficulties of stream processing at scale, the solutions Facebook has created to date, and three case studies on improving the time-to-deliver insights with data via stream processing. The case studies include examples from search product development, accelerating daily pipelines in the data warehouse, and seamless integration with machine learning platforms. (This talk is based on a recent talk given by Rajesh Nishtala at Scale 2017.)

Bio: Wolfram Schulte is currently a software engineer at Facebook. His focus is on improving availability and operational efficiency of Facebook’s large-scale distributed systems, lately focusing on streaming data in real-time. Before Facebook, Wolfram was director of engineering in Microsoft’s cloud and enterprise division, Redmond, WA, USA, where he founded the Tools for Software Engineers team to accelerate Microsoft’s engineering velocity, more specifically to minimize the cycle time of the inner loop from code review, via build, code-analysis and test, to deployment. Before venturing into product groups, Wolfram lead the Research in Software Engineering (RiSE) group and worked for many tools that Microsoft ships, including Linq, CodeContracts, Task Parallel Library, IntelliTest and SpecExplorer. Wolfram also co-developed the experimental program verifiers Spec# and VCC. In 2016 Wolfram was the recipient of the 2016 Harlan.D.Mills Award. For more see http://wolframschulte.com/

Rishabh Singh (Microsoft Research, USA)

Talk Title: Neural Program Synthesis

Abstract: The key to attaining general artificial intelligence is to develop architectures that are capable of learning complex algorithmic behaviors modeled as programs. The ability to learn programs allows these architectures to learn to compose high-level abstractions with complex control-flow, which can lead to many potential benefits: i) enable neural architectures to perform more complex tasks, ii) learn interpretable representations (programs which can be analyzed, debugged, or modified), and iii) better generalization to new inputs (like algorithms). In this talk, I will present some of our recent work in developing neural architectures for learning complex regular-expression based data transformation programs from input-output examples, and will also briefly discuss some other applications such as program repair and optimization that can benefit from learning neural program representations.

Bio: Rishabh Singh is a researcher in the Cognition group at Microsoft Research, Redmond. His research interests span the areas of programming languages, formal methods, and deep learning. His recent work has focused on developing new neural architectures for learning programs. He obtained his PhD in Computer Science from MIT in 2014, where he was a Microsoft Research PhD fellow and was awarded the MIT’s George M. Sprowls Award for Best PhD Dissertation. He obtained his BTech in Computer Science from IIT Kharagpur in 2008, where he was awarded the Institute Silver Medal and Bigyan Sinha Memorial Award.

Qianxiang Wang (Huawei, China)

Talk title: How Can Software Engineers Explore a New Way to the Cognitive Intelligence?

Abstract: Deep learning excites the current wave of Artificial Intelligence. Many software engineers are exploring the application of deep learning in software engineering area these days. Some AI researchers think next wave of AI may belong to cognitive intelligence, which cannot lead by deep learning. As intelligence intensive workers, can software engineers explore a new way to the next wave of AI?

Bio: Dr. Qianxiang Wang is the director of software analysis LAB of HUAWEI, vice chair of ACM CSOFT(China chapter of SIGSOFT), secretary-general of CCF TCSE(Technical Committee of Software Engineering, China Computer Federation). He was the former professor of Peking University.