Hosted by Uber's Programming Systems Team, the Programming Systems and Tools track of the 2nd Uber Science Symposium brings together practitioners and researchers in programming languages, systems and tools, to facilitate the sharing of information and best practices, foster discussion, and form bridges between research communities in the programming systems space.
The program features presentations spanning a variety of topics from recognized leaders in both the industry and the academia.
The event will also feature refreshments, lunch, and a closing reception are included, along with plenty of time for socializing.
Symposium registration closes on April 12, 2019.
Checkout the RSVP form for registration information.
The 2nd Uber Science Symposium is comprised of three parallel tracks: [1] Programming Systems and Tools, [2] Behavioral Science, and [3] Bayesian Optimization.
Each track consists of a full-day program with talks from well-known practitioners and scientists in that field. Participants are free to attend talks in different tracks or stay in a single track for the whole day.
IAN BROWN
Bird-friendly Coffee: How Twitter works to make the JVM work for Twitter
In 2012 Twitter migrated from a monolithic Ruby on Rails app to a fine-grained microservices, uh, mesh running on top of the JVM. In this talk we’ll look at some of the challenges (and opportunities!) in running hundreds of services on many thousands of JVMs, and survey the current work and future directions of Twitter’s JVM R&D efforts.
Ian Brown drinks way too much coffee, tweets bad dad jokes, and allegedly manages Twitter’s JVM and Kernel & Operating Systems engineering teams.
JOHN PAMPUCH
Does Anyone Really Know What Time it is: Google’s GoodTime project?
Java’s various time APIs have historically been prone to misunderstanding and misuse. The newest APIs (java.time in Java 8) are a major upgrade, but the nature and complexity of time and time APIs still plagues developers. Using error-prone checks, we are identifying potential errors in use patterns, guiding application developers to correctly use more clear APIs, and encouraging library developers to expose APIs that more clearly represent instances and durations. Through this exercise, we’ve also been evaluating a new paradigm for library/API delivery and are considering applying this paradigm to our future library development. In this talk, I’ll share our approach, our results, and lessons learned through the exercise.
John Pampuch has held various engineering and management roles at Sun, Oracle, Adobe, and Azul Systems. His current role is focused on Java and Kotlin for internal deployment at Google. His team builds the platform, tools and libraries for Java developers across Google. John is primarily a Java developer, but has also written his fair share of bugs in C, C++ and other languages. He enjoys cooking, and drinking wine and scotch. In a past life, John invested a small fortune into Legos but today those mostly sit on a shelf in the garage.
KEYNOTE: ERIK MEIJER
Software is Eating the World, but ML is Going to Eat Software
“Democratizing ML” is a hot topic these days; efficiency, composability and accessibility of machine learning technology are active areas of investment for many research and product groups. While machine learning has the potential to fundamentally change how software is constructed (Software 1.0), there are also great opportunities to leverage machine learning to improve more conventional (Software 1.0) developer tools, compilers, IDEs, and continuous integration systems. Our Developer Infrastructure team is on a mission to fundamentally rethink and retool Facebook’s developer toolchain by applying machine learning at every layer in our stack to support both Software 2.0 as well as Software 1.0. Our goal is to make our developers more productive, and our processes and infrastructure more efficient, by deeply integrating ML into our programming languages and developer tools in novel ways. This talk will detail the work our team has done 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 AI-driven developer tools. We’ll describe the lessons we’ve learned along the way, as well as future opportunities we see to optimize or auto-tune other common pieces of developer infrastructure.
Erik Meijer is a Dutch computer scientist, entrepreneur, and tie-dye enthusiast. From 2000 to early 2013 he was a software architect for Microsoft where he headed the Cloud Programmability Team. He then founded Applied Duality Inc. in 2013. Before that, he was an associate professor at Utrecht University. Since 2015 he has been a Director of Engineering at Facebook. He received his Ph.D. from Nijmegen University in 1992. Meijer's research has included the areas of functional programming (particularly Haskell) compiler implementation, parsing, programming language design, XML, and foreign function interfaces. In 2011 Erik Meijer was appointed part-time professor of Cloud Programming within the Software Engineering Research Group at Delft University of Technology. He is also member of the ACM Queue Editorial Board. Since 2013 he is also Honorary Professor of Programming Language Design at the School of Computer Science of the University of Nottingham, associated with the Functional Programming Laboratory.
MAYUR NAIK
Learning to Reason about Programs
Computer-aided approaches to discover bugs or verify programs have made significant strides in recent years. However, the dominant approach to develop and maintain software continues to rely heavily on human expertise. A notable advantage possessed by humans is the ability to learn from past experiences, discover patterns, and avoid repeating mistakes. This talk presents our experience incorporating artificial intelligence techniques such as Bayesian networks, continuous optimization, neural graph embeddings, and reinforcement learning in computer-aided approaches to analyze complex programs. The resulting approaches stand to make a quantum leap in reducing human effort and vastly improve programmer productivity and software quality.
Mayur Naik is an Associate Professor of Computer and Information Science at the University of Pennsylvania. The overarching goal of his research is to develop effective computer-aided approaches for improving software quality and programmer productivity. His research group is exploring ways to achieve this goal by deeply integrating machine learning and symbolic reasoning. He received a Ph.D. in Computer Science from Stanford University in 2008 and was a researcher at Intel Labs, Berkeley from 2008 to 2011, and an Assistant Professor of Computer Science at Georgia Tech from 2011 to 2016.
XIPENG SHEN
A Single Idea in Compiler Goes a Long Way in ML - Generalized Redundancy Removal for Machine Learning
In a recent series of research, Dr. Shen and his colleagues have shown that generalization of a single idea in compiler, redundancy removal, can yield a whole set of novel techniques that significantly improve the speed and computing efficiency of modern machine learning. This talk will explain the idea behind generalized redundancy removal, the set of techniques it has led to, and how these techniques help halve DNN training and inference times, enable power-efficient concurrent training of thousands of DNN models, and improve the speed in finding a well pruned DNN by a factor of 173 with no quality loss nor addition of extra computing resource. The talk will in addition describe Egeria, a framework for automatic synthesis of HPC advising tools through multi-Layered Natural Language Processing. (The talk is based on Dr. Shen's recent publications at PLDI'2019, ICDE'2019, SC'2018, SC'2017)
Xipeng Shen is a Professor in the Computer Science Department at North Carolina State University. His research has received a number of recognitions, including Early Career Research Award from the US Department of Energy, CAREER Award from US NSF, Google Faculty Research Award, IBM Center for Advanced Studies Faculty Fellow Award, ACM Distinguished Member, ACM Distinguished Speaker, and so on. His primary research work lies in the field of compiler and programming systems, but features an emphasis on inter-disciplinary problems and approaches. His research has produced influential results in multicore memory performance enhancements, GPU program compilations, high-level code optimizations, and other topics in programming systems. A number of the results have been incorporated into commercial compilers (e.g., IBM XL compilers) and other products. Meanwhile, his research has led to a number of progresses in machine learning and artificial intelligence, exemplified with a set of new machine learning algorithms (e.g., Yinyang K-Means, Multi-label Scene Classification) published at major ML or AI venues and adopted by Microsoft and other industry companies. He has chaired ASPLOS, PPOPP, and other major conferences, and served on the technical advisory boards of some leading IT companies. Prior to joining NC State in 2014 as a Chancellor's Faculty Excellence Program cluster hire in Data-Driven Science, Shen was the Adina Allen Term Distinguished Associate Professor in the Computer Science Department at The College of William and Mary. He spent his sabbatical at MIT, Microsoft Research, and Intel Labs between 2012 and 2013. He was an assistant professor at The College of William and Mary from 2006 to 2012. He received his Ph.D. in Computer Science from University of Rochester in 2006. In 2018, he was honored with University Faculty Scholars Award as an emerging academic leader who turns research into solutions to society’s most pressing issues.
MARTIN RINARD
Automatically Patching Defects in Software Systems
Patching defects is a central activity in essentially all software development activities. Current practice relies almost exclusively on human developers to manually locate and patch each defect.
I will present two techniques for automatically patching software
defects. Both leverage the enormous amount of software and software
revision histories produced by open-source software development
efforts. The first technique locates and transfers correct code from a donor
application into a recipient application to eliminate defects in the
recipient. The technique generates and searches a space of potential
patches, using a model of correct code learned from previous
successful patches to guide the search. The experimental results
highlight the potential of these two techniques to automate the
elimination of many defects.
Martin Rinard is a Professor in the MIT Department of Electrical
Engineering and Computer Science and a member of the MIT Computer
Science and Artificial Intelligence Laboratory. His research interests
have included programming languages, computer security, program
analysis, program verification, software engineering, distributed
computing, and high-performance computing. His research group
has produced new directions and groundbreaking results in many
fields including approximate computing, computer security,
robust and resilient computing, and automatic patch generation. Dr. Rinard holds a PhD in Computer Science from Stanford
University. He is an ACM Fellow and has received many awards including
an Alfred P. Sloan Research Fellowship and Distinguished and Best
Paper awards from a variety of publication venues.
KOUSHIK SEN
Automated Test Generation: A Journey from Symbolic Execution to Smart Fuzzing and Beyond
In the last two decades, automation has had a significant impact on software testing and analysis. Automated testing techniques, such as symbolic execution, concolic testing, and feedback-directed fuzzing, have found numerous critical faults, security vulnerabilities, and performance bottlenecks in mature and well-tested software systems. The key strength of automated techniques is their ability to quickly search state spaces by performing repetitive and expensive computational tasks at a rate far beyond the human attention span and computation speed. In this talk, I will give a brief overview of our past and recent research contributions in automated test generation using symbolic execution and fuzzing. I will also describe a new technique, called constraint-directed fuzzing, where given a pre-condition on a program as a logical formula, we can efficiently generate millions of test inputs satisfying the pre-condition.
Koushik Sen is a professor in the Department of Electrical Engineering and Computer Sciences at the University of California, Berkeley. His research interest lies in Software Engineering, Programming Languages, and Formal methods. He is interested in developing software tools and methodologies that improve programmer productivity and software quality. He is best known for his work on “DART: Directed Automated Random Testing” and concolic testing. He has received a NSF CAREER Award in 2008, a Haifa Verification Conference (HVC) Award in 2009, a IFIP TC2 Manfred Paul Award for Excellence in Software: Theory and Practice in 2010, a Sloan Foundation Fellowship in 2011, a Professor R. Narasimhan Lecture Award in 2014, and an Okawa Foundation Research Grant in 2015. He has won several ACM SIGSOFT Distinguished Paper Awards. He received the C.L. and Jane W-S. Liu Award in 2004, the C. W. Gear Outstanding Graduate Award in 2005, and the David J. Kuck Outstanding Ph.D. Thesis Award in 2007, and a Distinguished Alumni Educator Award in 2014 from the UIUC Department of Computer Science. He holds a B.Tech from Indian Institute of Technology, Kanpur, and M.S. and Ph.D. in CS from University of Illinois at Urbana-Champaign.