Co-PIs: Martin Erwig and Thinh Nguyen
Developing software for complex, dynamic environments is a huge challenge using existing programming paradigms. Programmers must specify the exact behavior of a program at each point which, for complex problems, such as network control and designing intelligent game agents, is extremely difficult to do close to optimally. To better facilitate software development for such problems, the paradigm of adaptation-based programming (ABP) is investigated. In the ABP paradigm, programmers only exactly specify the parts of the program that they are confident about and leave other parts as adaptable. In addition, the programmer will specify an objective function to be optimized by the program. During program execution, the adaptable parts of the program will then be automatically optimized using state-of-the-art machine-learning techniques in order to maximize the objective function. The research focuses on three key directions: 1) developing theoretical foundations including formal programming-language semantics and learnability results, 2) speeding up the learning process via program transformations and programmer-specified adaptation advice, and 3) producing freely available ABP libraries for both the C++ and Haskell languages. Importantly all of the work is driven by a focus on applications of ABP to real problems from computer networking and intelligent agents for simulation and game environments.