Modeling the user's plans and goals
Computational Linguistics - Special issue on user modeling
The programmer's apprentice
Automated program recognition: a feasibility demonstration
Artificial Intelligence
A generic arc-consistency algorithm and its specializations
Artificial Intelligence
Automated program recognition by graph parsing
Automated program recognition by graph parsing
A memory-based approach to recognizing programming plans
Communications of the ACM
Computers and Intractability: A Guide to the Theory of NP-Completeness
Computers and Intractability: A Guide to the Theory of NP-Completeness
DECODE: a cooperative environment for reverse-engineering legacy software
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Program Understanding as Constraint Satisfaction
CASE '95 Proceedings of the Seventh International Workshop on Computer-Aided Software Engineering
Toward A Constraint-Satisfaction Frameworkfor Evaluating Program-Understanding Algorithms
Automated Software Engineering
Program Understanding as Constraint Satisfaction: Representation and Reasoning Techniques
Automated Software Engineering
Applying Plan Recognition Algorithms To Program Understanding
Automated Software Engineering
An Approach for Recovering Distributed System Architectures
Automated Software Engineering
On the Meaning of Computer Programs
CT '01 Proceedings of the 4th International Conference on Cognitive Technology: Instruments of Mind
Fast detection of communication patterns in distributed executions
CASCON '97 Proceedings of the 1997 conference of the Centre for Advanced Studies on Collaborative research
ICTAI '99 Proceedings of the 11th IEEE International Conference on Tools with Artificial Intelligence
Context-sensitive domain-independent algorithm composition and selection
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
An empirical validation of complexity profile graph
Proceedings of the 43rd annual Southeast regional conference - Volume 1
Improving program comprehension by combining code understanding with comment understanding
Knowledge-Based Systems
Special issue on information retrieval for program comprehension
Empirical Software Engineering
Algorithm recognition by static analysis and its application in students' submissions assessment
Koli '08 Proceedings of the 8th International Conference on Computing Education Research
Hi-index | 0.00 |
Program understanding is the process of making sense of a complex source code. This process has been considered as computationally difficult and conceptually complex. So far no formal complexity results have been presented, and conceptual models differ from one researcher to the next. We formally prove that program understanding is NP hard. Furthermore, we show that even a much simpler subproblem remains NP hard. However we do not despair by this result, but rather offer an attractive problem solving model for the program understanding problem. Our model is built on a framework for solving constraint satisfaction problems, or CSPs, which are known to have interesting heuristic solutions. Specifically, we can represent and heuristically address previous and new heuristic approaches to the program understanding problem with both existing and specially designed constraint propagation and search algorithms.