Results 1 -
7 of
7
Representing Logic Program Schemata in Prolog
- Proceedings of the Twelfth International Conference on Logic Programming
, 1995
"... Abstract. Program schemata and programming techniques provide a mechanism for representing the essential characteristics of logic programs. By abstracting out common recursive control flow patterns, program schemata capture large classes of logic programs. Programming techniques represent common pro ..."
Abstract
-
Cited by 13 (2 self)
- Add to MetaCart
Abstract. Program schemata and programming techniques provide a mechanism for representing the essential characteristics of logic programs. By abstracting out common recursive control flow patterns, program schemata capture large classes of logic programs. Programming techniques represent common program components. By instantiating portions of program schemata with programming techniques, it is possible to generate arbitrary logic programs. In order to represent program schemata and programming techniques for any programming language, it is desirable to use a higher-order programming language as the representation language. �Prolog is a higher-order logic programming language that extends Prolog by incorporating higher-order unification and �-terms, making it an ideal logic programming language for representing logic program schemata and programming techniques. Because �Prolog program schemata and programming techniques can be represented in �Prolog, there is no need for the creation of an abstract meta-language in order to define and classify logic program schemata and programming techniques. 1
Extensible Logic Program Schemata
"... . Schema-based transformational systems maintain a library of logic program schemata which capture large classes of logic programs. One of the shortcomings of schema-based transformation approaches is their reliance on a large (possibly incomplete) set of logic program schemata that is required in o ..."
Abstract
-
Cited by 11 (1 self)
- Add to MetaCart
. Schema-based transformational systems maintain a library of logic program schemata which capture large classes of logic programs. One of the shortcomings of schema-based transformation approaches is their reliance on a large (possibly incomplete) set of logic program schemata that is required in order to capture all of the minor syntactic differences between semantically similar logic programs. By defining a set of extensible logic program schemata and an associated set of logic program transformations, it is possible to reduce the size of the schema library while maintaining the robustness of the transformational system. In our transformational system, we have defined a set of extensible logic program schemata in #Prolog. Because #Prolog is a higher-order logic programming language, it can be used as the representation language for both the logic programs and the extensible logic program schemata. In addition to the instantiation of predicate variables, extensible logic program sc...
Transformation-based diagnosis of student programs for programming tutoring systems
- IEEE Transactions on Software Engineering
, 2003
"... Abstract: A robust technology that automates the diagnosis of students ’ programs is essential for programming tutoring systems. Such technology should be able to determine whether programs coded by a student are correct. If a student’s program is incorrect, the system should be able to pinpoint err ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
Abstract: A robust technology that automates the diagnosis of students ’ programs is essential for programming tutoring systems. Such technology should be able to determine whether programs coded by a student are correct. If a student’s program is incorrect, the system should be able to pinpoint errors in the program as well as explain and correct the errors. Due to the difficulty of this problem, no existing system performs this task entirely satisfactorily, and this problem still hampers the development of programming tutoring systems. This paper describes a transformation-based approach to automate the diagnosis of students ’ programs for programming tutoring systems. Improved control-flow analysis and data-flow analysis are used in program analysis. Automatic diagnosis of student programs is achieved by comparing the student program with a specimen program at the semantic level after both are standardized. The approach was implemented and tested on 525 real student programs for nine different programming tasks. Test results show that the method satisfies the requirements stated above. Compared to other existing approaches to automatic diagnosis of student programs, the approach developed here is more rigorous and safer in identifying student programming errors. It is also simpler to make use of in practice. Only specimen programs are needed for the diagnosis of student programs. The techniques of program standardization and program comparison developed here may also be useful for research in the fields of program understanding and software maintenance.
The Application of Machine Learning to Student Modeling: Survey and Analysis
- Tokio Institute of Technology
, 1996
"... this report reserves all the rights. ..."
Representing Logic Program Schemata in lambdaProlog
"... .Program schemata and programming techniques provide a mechanism for representing the essential characteristics of logic programs. By abstracting out common recursive control flow patterns, program schemata capture large classes of logic programs. Programming techniques represent common program comp ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
.Program schemata and programming techniques provide a mechanism for representing the essential characteristics of logic programs. By abstracting out common recursive control flow patterns, program schemata capture large classes of logic programs. Programming techniques represent common program components. By instantiating portions of program schemata with programming techniques, it is possible to generate arbitrary logic programs. In order to represent program schemata and programming techniques for any programming language, it is desirable to use a higher-order programming language as the representation language. #Prolog is a higher-order logic programming language that extends Prolog by incorporating higher-order unification and #-terms, making it an ideal logic programming language for representing logic program schemata and programming techniques. Because #Prolog program schemata and programming techniques can be represented in #Prolog, there is no need for the creation of an a...
An Abstract Formulation of Correct Schemas for Program Synthesis
, 1999
"... Program schemas should capture not only structured program design principles, but also domain knowledge, both of which are of crucial importance for hierarchical program synthesis. However, most researchers represent schemas as purely syntactic constructs, which can provide only a program template, ..."
Abstract
- Add to MetaCart
Program schemas should capture not only structured program design principles, but also domain knowledge, both of which are of crucial importance for hierarchical program synthesis. However, most researchers represent schemas as purely syntactic constructs, which can provide only a program template, bu...
Preventive Tutoring in Programming: A Tutoring System for Novice Program Design
, 2003
"... To address novice deficiencies in strategic programming knowledge, this thesis proposal describes Coached Program Planning (CPP), a tutorial model for structured program design, and subsequently proposes an intelligent tutoring system embodying that model. The aim is to support novices in the tra ..."
Abstract
- Add to MetaCart
To address novice deficiencies in strategic programming knowledge, this thesis proposal describes Coached Program Planning (CPP), a tutorial model for structured program design, and subsequently proposes an intelligent tutoring system embodying that model. The aim is to support novices in the transition from an intuitive understanding of the target task to a deeper, more algorithmic view. This is accomplished by eliciting observations and design decisions from the student before they attempt an implementation. In a human-to-human, computer-mediated study, CPP was found to positively impact novice programming behaviors. In addition, the resulting corpus reveals that that novices are generally able to describe what needs to be done (goals) and identify aspects of how to achieve those goals (schemas). Not surprisingly, the language they use shows heavy dependence on the problem statement and on their largely syntactic repertoire of programming knowledge. Various tutoring tactics are used to improve flawed student answers, including simple moves like pumping, and more elaborate, multi-turn tactics like the use of interactive concrete examples. I have built a prototype intelligent tutoring system ProPl ("pro-PELL") using knowledge construction dialogues (KCDs) as the primary knowledge source. I am proposing to extend this base system by implementing methods that attempt KCD recovery. That is, for utterances not successfully mapped to expected answers, the revised system will execute dialogue moves that attempt to re-establish the line of reasoning modeled in the KCD. The motivation for this approach is the need to accommodate novices' range of linguistic expression of program design concepts. I intend to evaluate the system in terms of problem decomposit...

