On convergence toward a database of program transformations
ACM Transactions on Programming Languages and Systems (TOPLAS)
A 15 Year Perspective on Automatic Programming
IEEE Transactions on Software Engineering - Special issue on artificial intelligence and software engineering
Enhanced Maintenance and Explanation of Expert Systems Through Explicit Models of Their Development
IEEE Transactions on Software Engineering - Special issue on artificial intelligence and software engineering
The Role of Domain Expenence in Software Design
IEEE Transactions on Software Engineering - Special issue on artificial intelligence and software engineering
Understanding and Automating Algorithm Design
IEEE Transactions on Software Engineering - Special issue on artificial intelligence and software engineering
The automated tutoring of introductory computer programming
Communications of the ACM
Learning to program = learning to construct mechanisms and explanations
Communications of the ACM
Intention-based diagnosis of errors in novice programs
Intention-based diagnosis of errors in novice programs
Plans in programming: definition, demonstration, and development
Papers presented at the first workshop on empirical studies of programmers on Empirical studies of programmers
Cognitive processes in program comprehension
Papers presented at the first workshop on empirical studies of programmers on Empirical studies of programmers
Breakdowns and processes during the early activities of software design by professionals
Empirical studies of programmers: second workshop
Control of cognitive processes during software design: what tools are needed?
CHI '88 Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Variability in program design: the interaction of process with knowledge
International Journal of Man-Machine Studies - What programmers know
A System for Assisting Program Transformation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Training wheels in a user interface
Communications of the ACM
Cognitive strategies and looping constructs: an empirical study
Communications of the ACM
Explanation Patterns: Understanding Mechanical and Creatively
Explanation Patterns: Understanding Mechanical and Creatively
Systematic Program Development
IEEE Transactions on Software Engineering
Delocalized Plans and Program Comprehension
IEEE Software
A Study on Applying Roles of Variables in Introductory Programming
VLHCC '07 Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing
End-user mashup programming: through the design lens
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Teaching and assessing programming strategies explicitly
ACE '09 Proceedings of the Eleventh Australasian Conference on Computing Education - Volume 95
Hi-index | 0.00 |
Program design, from initial idea to executable code, was studied in a group of novice (first programming course) and a group of intermediate (second course) student programmers. The approach of the intermediate students could usually be described as forward and top-down design, but the behavior of the novices could not be so easily captured. Top-down design depends on both the expertise of the programmer and the difficulty of the problem. When faced with a difficult problem, even the expert has to build up a solution from simple pieces. In the approach adopted here, top-down design is based on the refinement of a known solution or schema that is retrieved and expanded at progressively greater levels of detail. If the expert knows all the required abstract and detailed schemas, then the design shows a pattern of top-down and forward expansion at all levels. When a schema cannot be retrieved and has to be created, top-down design breaks down and is replaced by bottom-up design. At the extreme, a rank novice has to create all the required plans, and design then shows consistent bottom-up and backward solution development. Separating plan retrieval from plan creation has three important consequences. First, a model of plan creation shows how knowledge, in the form of plan schemas, is created during the process of program design. Second, plan creation reveals the internal structure of a schema that is hidden in the final program code. Third, the behavior of designers, described as top-down or bottom-up design, may be explained as a result of specific knowledge that is used to design a program.