Adaptation-Based Programming

Project Description

Developing software for complex, dynamic environments is a huge challenge using existing programming paradigms. Currently, programmers must specify the exact behavior of a program at each point, which, for complex problems, is difficult to do optimally or even close to optimally. For example, when writing network-control software there is a great deal of uncertainty regarding the best values for various parameters and the best network operations to perform at each point. These choices have a significant impact on performance and can depend on the specific network context, which is unknown at compile time and difficult to manually tune at run time.

The goal of this project is to develop a paradigm of adaptation-based programming (ABP) to better facilitate software development for such problems. ABP is well suited to situations where a programmer knows the objective function of a problem (e.g., data throughput in a networking scenario) but does not know how to write a program for optimizing it. In the newly developed programming paradigm, the programmer will only exactly specify the parts of the program that they are confident about and leave other parts as adaptable. During program execution, the adaptable parts of the program will then be automatically optimized using state-of-the-art online machine-learning techniques in order to maximize the programmer-specified objective function.

More Information (including the Java ABP library)

Adapdation-Based Programming Group

Selected Publications

Faster Program Adaptation Through Reward Attribution Inference, Tim Bauer, Martin Erwig, Alan Fern, and Jervis Pinto
ACM SIGPLAN Conf. on Generative Programming and Component Engineering, 2012, to appear

Lightweight Automated Testing with Adaptation-Based Programming, Alex Groce, Alan Fern, Martin Erwig, Jervis Pinto, Tim Bauer, and Amin Alipour
Int. Symp. on Leveraging Applications of Formal Methods, Verification, and Validation, 2012, to appear

Learning-Based Test Programming for Programmers, Alex Groce, Alan Fern, Jervis Pinto, Tim Bauer, Mohammad Amin Alipour, Martin Erwig and Camden Lopez
IEEE Int. Symp. on Software Reliability Engineering, 2012, to appear

Finding Common Ground: Choose, Assert, and Assume, Alex Groce and Martin Erwig
Int. Workshop on Dynamic Analysis, 12-17, 2012

Adaptation-Based Programming in Haskell, Tim Bauer, Martin Erwig, Alan Fern, and Jervis Pinto
IFIP Working Conference on Domain Specific Languages, 1-23, 2011

Improving Policy Gradient Estimates with Influence Information, Jervis Pinto, Alan Fern, Tim Bauer, and Martin Erwig
Asian Conference on Machine Learning, 1-16, 2011

Adaptation-Based Programming in Java, Tim Bauer, Martin Erwig, Alan Fern, and Jervis Pinto
ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, 81-90, 2011

Robust Learning for Adaptive Programs by Leveraging Program Structure, Jervis Pinto, Alan Fern, Tim Bauer, and Martin Erwig
IEEE Int. Conference on Machine Learning and Applications, 943-948, 2010


This project is supported by the National Science Foundation under the grant CCF-0820286 "Adaptation-Based Programming".
last change: July 27, 2012 Martin Erwig