Results 1 - 10
of
14
Skeleton-based Agent Development for Electronic
- In Proc. AAMAS’02
, 2002
"... In this paper we describe work in progress concerning the (semi-)automatic support for developing agents. We focus on the scenario in which agents have to be designed to follow an electronic institution. An initial design pattern is automatically extracted from a given electronic institution and oer ..."
Abstract
-
Cited by 23 (4 self)
- Add to MetaCart
In this paper we describe work in progress concerning the (semi-)automatic support for developing agents. We focus on the scenario in which agents have to be designed to follow an electronic institution. An initial design pattern is automatically extracted from a given electronic institution and oered to programmers willing to develop agents for the speci c purpose of joining and performing in the electronic institution. We resort to logic programming as our underlying computational framework, explaining and justifying this decision.
Designing Prolog Programming Techniques
, 1994
"... We propose a medium in which expert programmers can design, test and organise Prolog programming techniques. The proposed approach employs simple single-argument program fragments and their combinations in order to represent techniques. The devised techniques can be made available to other programme ..."
Abstract
-
Cited by 12 (7 self)
- Add to MetaCart
We propose a medium in which expert programmers can design, test and organise Prolog programming techniques. The proposed approach employs simple single-argument program fragments and their combinations in order to represent techniques. The devised techniques can be made available to other programmers, by means of techniques-based editors. 1 Introduction Due to the simplicity and compactness of the syntax of Prolog, commonly occurring patterns in programs can be detected automatically [Loo88, Bow92] or manually and used in a variety of ways, e.g. the detection of bugs [Loo88], the construction of (similar) programs [GH91, KLS89], the automatic explanation of programs [Gab92] and teaching purposes (automatic or human tutoring) [BBD + 91, Rob91]. These patterns are loosely named techniques [Bow92, Brn91, BBD + 91] and, together with knowledge of when and where to use them, provide a useful account of the body of knowledge necessary for the systematic development of correct Prolog pr...
Prolog Program Development via Enhanced Schema-Based Transformations
, 1995
"... We describe state-of-the-practice results in integrating a program transformation approach to a program development environment. We propose a formalisation for a specific kind of programming knowledge, the programming techniques. Our proposal employs program schemata, generic descriptions of program ..."
Abstract
-
Cited by 4 (4 self)
- Add to MetaCart
We describe state-of-the-practice results in integrating a program transformation approach to a program development environment. We propose a formalisation for a specific kind of programming knowledge, the programming techniques. Our proposal employs program schemata, generic descriptions of programs addressing portions of predicate definitions in an economical manner, allowing important features to be highlighted and irrelevant details to be disregarded. This formalisation of programming techniques is employed in the definition of a program development framework which supports the preparation of individual predicates, and additionally provides a supervising facility which checks inter-procedural relations for possible efficiency improvements. 1 Introduction In this work we propose a formalisation for a specific kind of programming knowledge, the programming techniques. Programming techniques are common code patterns of a programming language, independent of algorithms and problem do...
An Editor for Helping Novices to Learn Standard ML
- In Proceedings of the Ninth International Symposium on Programming Languages, Implementations, Logics and Programs
, 1997
"... This paper describes a novel editor intended as an aid in the learning of the functional programming language Standard ML. A common technique used by novices is programming by analogy whereby students refer to similar programs that they have written before or have seen in the course literature and u ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
This paper describes a novel editor intended as an aid in the learning of the functional programming language Standard ML. A common technique used by novices is programming by analogy whereby students refer to similar programs that they have written before or have seen in the course literature and use these programs as a basis to write a new program. We present a novel editor for ML which supports programming by analogy by providing a collection of editing commands that transform old programs into new ones. Each command makes changes to an isolated part of the program. These changes are propagated to the rest of the program using analogical techniques. We observed a group of novice ML students to determine the most common programming errors in learning ML and restrict our editor such that it is impossible to commit these errors. In this way, students encounter fewer bugs and so their rate of learning increases. Our editor, C Y NTHIA, has been implemented and is due to be tested on st...
Evaluating Environments for Functional Programming
- International Journal of Human-Computer Studies
, 2000
"... Functional programming presents new challenges in the design of programming environments. In a strongly typed functional language, such as ML, much conventional debugging of runtime errors is replaced by dealing with compile time error reports. On the other hand, the cleanness of functional progr ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
Functional programming presents new challenges in the design of programming environments. In a strongly typed functional language, such as ML, much conventional debugging of runtime errors is replaced by dealing with compile time error reports. On the other hand, the cleanness of functional programming opens up new possibilities for incorporating sophisticated correctness-checking techniques into such environments. C Y NTHIA is a novel editor for ML that both addresses the challenges and explores the possibilities. It uses an underlying proof system as a framework for automatically checking for semantic errors such as non-termination. In addition, C Y NTHIA embodies the idea of programming by analogy --- whereby users write programs by applying abstract transformations to existing programs. This paper investigates C Y NTHIA's potential as a novice ML programming environment. We report on two studies in which it was found that students using C Y NTHIA commit fewer er...
Pitfalls of Formality in Early System Design
- In Proceedings of the 1998 ARO/NSF Monterey Workshop on Increasing the Practical Impact of Formal Methods for Computer-Aided Software Development
, 1998
"... One of the advantages of using formal methods in design should be that we can be precise about where our methods fail. However, it is rare to find discussions in the literature of problems in applying formal methods - particularly in the early stages of design. One reason for this is that failures a ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
One of the advantages of using formal methods in design should be that we can be precise about where our methods fail. However, it is rare to find discussions in the literature of problems in applying formal methods - particularly in the early stages of design. One reason for this is that failures are often caused by the context in which a method is applied, rather than by some purely technical limitation. Using examples from research in which I have been involved I shall describe some of the pitfalls I have encountered and which I have observed frequently in the research of others. 1 Introduction Berry, in these proceedings [1], advocates the use of appropriately chosen and applied formal methods in the early stages of design lifecycles - observing factors outside the technical considerations of the methods themselves which influence their success. This paper is complementary to Berry's discussion because it looks at some factors which can lead to failure. It has been unfashionable f...
Supporting Programming by Analogy in the Learning of Functional Programming Languages
- University of Edinburgh
, 1997
"... This paper examines the learning of the functional programming language Standard ML. A common technique used by novices is programming by analogy whereby students refer to similar programs that they have written before or have seen in the course literature and use these programs as a basis to wri ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
This paper examines the learning of the functional programming language Standard ML. A common technique used by novices is programming by analogy whereby students refer to similar programs that they have written before or have seen in the course literature and use these programs as a basis to write a new program. We present a novel editor for ML which supports programming by analogy by providing a collection of editing commands that transform old programs into new ones. Each command makes changes to an isolated part of the program. These changes are propagated to the rest of the program using analogical techniques. Many commands are at a level high enough to provide guidance to the novice during program development. We observed a group of novice ML students to determine the most common programming errors in learning ML and restrict our editor such that it is impossible to commit these errors. In this way, students encounter fewer bugs and so their rate of learning increases.
Developing Correct and Efficient Logic Programs by Transformation
- Knowledge Engineering Review
, 1996
"... this paper, from formal specifications one may obtain executable, efficient programs by using techniques for transforming logic programs. This is, indeed, one of the reasons that makes logic programming very attractive for program construction. During this final step from specifications to programs, ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
this paper, from formal specifications one may obtain executable, efficient programs by using techniques for transforming logic programs. This is, indeed, one of the reasons that makes logic programming very attractive for program construction. During this final step from specifications to programs, in order to improve efficiency one may want to use program transformation for avoiding multiple visits of data structures, or replacing complex forms of recursion by tail recursion, or reducing nondeterminism of procedures. This paper is structured as follows. In Section 2 we present the rule-based approach to program transformation and its use for the derivation and synthesis of logic programs from specifications. In Section 3 we consider the schema-based transformation technique for the development of efficient programs. In Section 4 we consider the partial evaluation technique and its use for the specialization of logic programs when the input data are partially known at compile time. In the final section we discuss some of the achievements and challanges of program transformation as a tool for logic-based software engineering. For simplicity reasons in this paper we will only consider definite logic programs, although most of the techniques we will describe can be applied also in the case of general logic programs. We refer to [35, 41] for all notions concerning logic programming and logic program transformation which are not explicitly presented here.
Formalising the Knowledge of a Prolog Techniques Editor
- In 9th Brazilian Symposium on Artificial Intelligence, Rio de Janeiro
, 1994
"... A Prolog Techniques Editor (PTE) [7, 9] is a knowledge-based software development tool which provides its users with simple Prolog programs depicting common flows of control and ways to enhance them into more elaborate and useful code. However, the expert Prolog programmers who provide these compone ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
A Prolog Techniques Editor (PTE) [7, 9] is a knowledge-based software development tool which provides its users with simple Prolog programs depicting common flows of control and ways to enhance them into more elaborate and useful code. However, the expert Prolog programmers who provide these components are offered no methodology or notation to help them formalise, test, compare and organise their programming knowledge in order to be supplied to the PTE. In this paper we propose the use of a repertoire of commands [4] and their combination in ordered sequences as a way to formalise the PTE's programming practices. 1 Introduction Tools have been proposed [1] to help programmers in the task of writing/debugging/analysing Prolog programs. Knowledge-based software development tools offer the advice of an expert programmer to their users, giving them the opportunity to devise their own programs in a quicker and more reliable way. One of these knowledge-based software tools is the Prolog Tec...
Automatic Derivation of Logic Programs by Transformation
- Course notes for ESSLLI
, 2000
"... We present the program transformation methodology for the automatic development of logic programs based on the rules + strategies approach. We consider both definite programs and normal programs and we present the basic transformation rules and strategies which are described in the literature. To il ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
We present the program transformation methodology for the automatic development of logic programs based on the rules + strategies approach. We consider both definite programs and normal programs and we present the basic transformation rules and strategies which are described in the literature. To illustrate the power of the program transformation approach we also give some examples of program development. Finally, we show how to use program transformations for proving properties of predicates and synthesizing programs from logical specifications.

