Novice mistakes: are the folk wisdoms correct?
Communications of the ACM
Artificial intelligence and software engineering
ICSE '87 Proceedings of the 9th international conference on Software Engineering
Some considerations on intelligent tutoring systems
IEA/AIE '88 Proceedings of the 1st international conference on Industrial and engineering applications of artificial intelligence and expert systems - Volume 2
A review of automated debugging systems: knowledge, strategies and techniques
ICSE '88 Proceedings of the 10th international conference on Software engineering
A plan-based intelligent assistant that supports the software development
SDE 3 Proceedings of the third ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
SRE: a knowledge-based environment for large-scale software re-engineering activities
ICSE '89 Proceedings of the 11th international conference on Software engineering
Domain analysis: from art form to engineering discipline
IWSSD '89 Proceedings of the 5th international workshop on Software specification and design
SDE 4 Proceedings of the fourth ACM SIGSOFT symposium on Software development environments
LaSSIE—a knowledge-based software information system
ICSE '90 Proceedings of the 12th international conference on Software engineering
Automatic Derivation of Formal Software Specifications from Informal Descriptions
IEEE Transactions on Software Engineering
Seven Layers of Knowledge Representation and Reasoning in Support of Software Development
IEEE Transactions on Software Engineering - Special issue on knowledge representation and reasoning in software development
Program Concept Recognition and Transformation
IEEE Transactions on Software Engineering - Special issue on software maintenance
Journal of Symbolic Computation - Special issue on automatic programming
A controlled experiment with software for teaching Ada tasking
TRI-Ada '93 Proceedings of the conference on TRI-Ada '93
Automated support for legacy code understanding
Communications of the ACM
A Knowledge-Based Approach to the Analysis of Loops
IEEE Transactions on Software Engineering
Reverse engineering and system renovation—an annotated bibliography
ACM SIGSOFT Software Engineering Notes
The concept assignment problem in program understanding
ICSE '93 Proceedings of the 15th international conference on Software Engineering
A System for Generating Reverse Engineering Tools: A Case Study of Software Modularisation
Automated Software Engineering
An Interactive Programming Environment for Enhancing Learning Performance
DNIS '02 Proceedings of the Second International Workshop on Databases in Networked Information Systems
ParAgent: A Domain-Specific Semi-automatic Parallelization Tool
HiPC '00 Proceedings of the 7th International Conference on High Performance Computing
Tutoring Prolog Novices Based on Programming Techniques
ITS '98 Proceedings of the 4th International Conference on Intelligent Tutoring Systems
Transformation-Based Diagnosis of Student Programs for Programming Tutoring Systems
IEEE Transactions on Software Engineering
Fast detection of communication patterns in distributed executions
CASCON '97 Proceedings of the 1997 conference of the Centre for Advanced Studies on Collaborative research
The neglected battle fields of syntax errors
ACE '03 Proceedings of the fifth Australasian conference on Computing education - Volume 20
Program representation and behavioural matching for localizing similar code fragments
CASCON '93 Proceedings of the 1993 conference of the Centre for Advanced Studies on Collaborative research: software engineering - Volume 1
The development of a partial design recovery environment for legacy systems
CASCON '93 Proceedings of the 1993 conference of the Centre for Advanced Studies on Collaborative research: software engineering - Volume 1
Guided programming and automated error analysis in an intelligent Prolog tutor
International Journal of Human-Computer Studies
A Framework For An Automated Problem Solving And Program Development Environment
Journal of Integrated Design & Process Science
An Analysis on a Learning Support System for Tracing in Beginner's Debugging
Proceedings of the 2007 conference on Supporting Learning Flow through Integrative Technologies
Algorithm recognition by static analysis and its application in students' submissions assessment
Koli '08 Proceedings of the 8th International Conference on Computing Education Research
Automatic diagnosis of student programs in programming learning environments
IJCAI'99 Proceedings of the 16th international joint conference on Artificial intelligence - Volume 2
Do values grow on trees?: expression integrity in functional programming
Proceedings of the seventh international workshop on Computing education research
An interactive functional programming tutor
Proceedings of the 17th ACM annual conference on Innovation and technology in computer science education
Design of a knowledge base to teach programming
ITS'12 Proceedings of the 11th international conference on Intelligent Tutoring Systems
Designing the knowledge base for a PHP tutor
ITS'12 Proceedings of the 11th international conference on Intelligent Tutoring Systems
AI for the win: improving spectrum-based fault localization
ACM SIGSOFT Software Engineering Notes
A tutoring system for debugging: status report
Journal of Computing Sciences in Colleges
Automated feedback generation for introductory programming assignments
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Debugging tutor: preliminary evaluation
Journal of Computing Sciences in Colleges
Hi-index | 0.04 |
This paper describes a program called PROUST which does on-line analysis and understanding of Pascal written by novice programmers. PROUST takes as input a program and a nonalgorithmic 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.