An empirical investigation of the tacit plan knowledge in programming
Human factors in computer systems
Cognitive strategies and looping constructs: an empirical study
Communications of the ACM
Uncovering principles of novice programming
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Tapping into tacit programming knowledge
CHI '82 Proceedings of the 1982 Conference on Human Factors in Computing Systems
PELAS-Program Error-Locating Assistant System
IEEE Transactions on Software Engineering
Program understanding: challenge for the 1990's
IBM Systems Journal
The role of critiquing in cooperative problem solving
ACM Transactions on Information Systems (TOIS) - Special issue on computer—human interaction
PROMPTER: a knowledge based support tool for code understanding
ICSE '85 Proceedings of the 8th international conference on Software engineering
A Method to Diagnose the User's Level
IBERAMIA '98 Proceedings of the 6th Ibero-American Conference on AI: Progress in Artificial Intelligence
Towards Building a Smarter Domain Knowledge Recovery Assistant1
COMPSAC '00 24th International Computer Software and Applications Conference
Fifteen years of psychology in software engineering: Individual differences and cognitive science
ICSE '84 Proceedings of the 7th international conference on Software engineering
A tool for programming learning with pedagogical patterns
eclipse '05 Proceedings of the 2005 OOPSLA workshop on Eclipse technology eXchange
Designing an understanding and debugging tool (UDT) for object-oriented programming language
AIKED'05 Proceedings of the 4th WSEAS International Conference on Artificial Intelligence, Knowledge Engineering Data Bases
IJCAI'87 Proceedings of the 10th international joint conference on Artificial intelligence - Volume 1
Program understanding with the lambda calculus
IJCAI'87 Proceedings of the 10th international joint conference on Artificial intelligence - Volume 1
SAMtool, a tool for deducing and implementing loop patterns
Proceedings of the fifteenth annual conference on Innovation and technology in computer science education
A detector for non-literal Java errors
Proceedings of the 10th Koli Calling International Conference on Computing Education Research
Structure-based categorization of programs to enable awareness about programming skills
KES'06 Proceedings of the 10th international conference on Knowledge-Based Intelligent Information and Engineering Systems - Volume Part III
Proceedings of the 12th Koli Calling International Conference on Computing Education Research
Hi-index | 0.00 |
This paper1 describes a program called PROUST which does on- line analysis and understanding of Pascal programs written by novice programmers. PROUST takes as input a program and a non-algorithmic description of the program requirements, and finds the most likely mapping-between the requirements and the code. This mapping is in essence a reconstruction of the design and implementation steps that the programmer went through in writing the program. A knowledge base of programming plans and strategies, together with common bugs associated with them, is used in constructing this mapping. Bugs are discovered in the process of relating plans to the code; PROUST can therefore give deep explanations of program bugs by relating the buggy code to its underlying intentions.