Code Sophistication: From Code Recommendation to Logic Recommendation
  A typical approach to programming is to first code the main execution
scenario, and then focus on filling out alternative behaviors and corner cases.
But, almost always, there exist unusual conditions that trigger atypical
behaviors, which are hard to predict in program specifications, and are thus
often not coded. In this paper, we consider the problem of detecting and
recommending such missing behaviors, a task that we call code sophistication.
Previous research on coding assistants usually focuses on recommending code
fragments based on specifications of the intended behavior. In contrast, code
sophistication happens in the absence of a specification, aiming to help
developers complete the logic of their programs with missing and unspecified
behaviors. We outline the research challenges to this problem and present early
results showing how program logic can be completed by leveraging code structure
and information about the usage of input parameters.
