Self-adjusting computation enables writing programs that can automatically and efficiently respond to changes to their data (e.g., inputs). The idea behind the approach is to store all data that can change over time i...
详细信息
Teaching beginners predicate transformer semantics for imperative languages is not a trivial task. For Computer Science majors, the teaching of the theoretical material must be supported by suitable practical course w...
详细信息
ISBN:
(纸本)9781595938763
Teaching beginners predicate transformer semantics for imperative languages is not a trivial task. For Computer Science majors, the teaching of the theoretical material must be supported by suitable practical course work. For this, we need a suitable language with appropriate tool Support. In this paper, we describe our experience of using SPARK and its tools for this purpose. Our experience has been a very positive one.
We decided to support active learning on a beginner's course on Reasoning about imperative Programs because our students find the material challenging. Because of the large class size and resource implications, we...
详细信息
ISBN:
(纸本)9781595933614
We decided to support active learning on a beginner's course on Reasoning about imperative Programs because our students find the material challenging. Because of the large class size and resource implications, we opted for a simple approach: the modified lecture format. We devised active learning sheets for use during lectures. Each sheet consisted of short questions which covered the main points of the lecture. Students had to answer the questions during the lectures as they listened. In this paper we describe how we designed the active learning sheets for this particular course, and the students' (positive) response to them.
The constructor calculus supports generic operations defined over arbitrary data types including abstract data types. This paper extends the basic constructor calculus to handle constructed locations. The resulting ca...
详细信息
The constructor calculus supports generic operations defined over arbitrary data types including abstract data types. This paper extends the basic constructor calculus to handle constructed locations. The resulting calculus is able to define a generic assignment operation that performs in-place whenever appropriate and allocates fresh memory otherwise. This approach may eliminate many of the space overheads associated with higher-order polymorphic languages. In combination with existing generic programming techniques it can express some very powerful algorithms such as the visitor pattern.
We present the kernel language approach;a new way to teach programming that situates most of the widely known programming paradigms (including imperative, object-oriented, concurrent, logic, and functional) into a uni...
详细信息
ISBN:
(纸本)140207266X
We present the kernel language approach;a new way to teach programming that situates most of the widely known programming paradigms (including imperative, object-oriented, concurrent, logic, and functional) into a uniform setting that shows their deep relationships and how to use them together. Widely different practical languages (exemplified by Java, Haskell, Prolog, and Erlang) with their rich panoplies of abstractions and syntax are explained by straightforward translations into closely related kernel languages, simple languages that consist of small numbers of programmer-significant concepts. Kernel languages are easy to understand and have a simple formal semantics that can be used by practicing programmers to reason about correctness and complexity.
Expectation-based probabilistic predicate transformers [15] provide a logic for probabilistic sequential programs, giving access to expressions such as ‘the probability that predicate A is achieved finally’. Using e...
详细信息
Expectation-based probabilistic predicate transformers [15] provide a logic for probabilistic sequential programs, giving access to expressions such as ‘the probability that predicate A is achieved finally’. Using expectations more generally however, we can express μ-calculus formulae for the expected path-length of a computation tree. Moreover within an expectation-based μ-calculus such efficiency measures and more conventional (but probabilistic) temporal operators [14] can be related.
We describe here an implemented small programming language, called Alma-0, that augments the expressive power of imperative programming by a limited number of features inspired by the logic programming paradigm. These...
详细信息
We describe here an implemented small programming language, called Alma-0, that augments the expressive power of imperative programming by a limited number of features inspired by the logic programming paradigm. These additions encourage declarative programming and make it a more attractive vehicle for problems that involve search. We illustrate the use of Alma-0 by presenting solutions to a number of classical problems, including alpha-beta search, STRIPS planning, knapsack, and Eight Queens. These solutions are substantially simpler than their counterparts written in the imperative or in the logic programming style and can be used for different purposes without any modification. We also discuss here the implementation of Alma-0 and an operational, executable, semantics of a large subset of the language.
We describe here an implemented small programming language, called Alma-O, that augments the expressive power of imperative programming by a limited number of features inspired by the logic programming paradigm. These...
详细信息
We describe here an implemented small programming language, called Alma-O, that augments the expressive power of imperative programming by a limited number of features inspired by the logic programming paradigm. These additions encourage declarative programming and make it a more attractive vehicle for problems that involve search. We illustrate the use of Alma-O by presenting solutions to a number of classical problems, including α-β search, STRIPS planning, knapsack, and Eight Queens. These solutions are substantially simpler than their counterparts written in the imperative or in the logic programming style and can be used for different purposes without any modification. We also discuss here the implementation of Alma-O and an operational, executable, semantics of a large subset of the language.
We use procedural parameters as a means to cut off unwanted branches in a search tree. The technique may be used to effect non-blind backtracking. A recursive algorithm for generating all strings of n pairs of balance...
详细信息
We use procedural parameters as a means to cut off unwanted branches in a search tree. The technique may be used to effect non-blind backtracking. A recursive algorithm for generating all strings of n pairs of balanced parentheses is chosen as an illustrative example, since it cannot be formulated by conventional recursive backtracking.
暂无评论