Results 1  10
of
19
KIDS: A SemiAutomatic Program Development System
 Client Resources on the Internet, IEEE Multimedia Systems ’99
, 1990
"... The Kestrel Interactive Development System (KIDS) provides automated sup port for the development of correct and efficient programs from formal specifications. ..."
Abstract

Cited by 238 (23 self)
 Add to MetaCart
The Kestrel Interactive Development System (KIDS) provides automated sup port for the development of correct and efficient programs from formal specifications.
Parallel Programming using Functional Languages
, 1991
"... I am greatly indebted to Simon Peyton Jones, my supervisor, for his encouragement and technical assistance. His overwhelming enthusiasm was of great support to me. I particularly want to thank Simon and Geoff Burn for commenting on earlier drafts of this thesis. Through his excellent lecturing Cohn ..."
Abstract

Cited by 48 (3 self)
 Add to MetaCart
I am greatly indebted to Simon Peyton Jones, my supervisor, for his encouragement and technical assistance. His overwhelming enthusiasm was of great support to me. I particularly want to thank Simon and Geoff Burn for commenting on earlier drafts of this thesis. Through his excellent lecturing Cohn Runciman initiated my interest in functional programming. I am grateful to Phil Trinder for his simulator, on which mine is based, and Will Partain for his help with LaTex and graphs. I would like to thank the Science and Engineering Research Council of Great Britain for their financial support. Finally, I would like to thank Michelle, whose culinary skills supported me whilst I was writingup.The Imagination the only nation worth defending a nation without alienation a nation whose flag is invisible and whose borders are forever beyond the horizon a nation whose motto is why have one or the other when you can have one the other and both
Algorithm theories and design tactics
 Science of Computer Programming
, 1990
"... Algorithm theories represent the structure common to a class of algorithms, such as divideandconquer or backtrack. An algorithm theory for a class A provides the basis for design tactics – specialized methods for designing Aalgorithms from formal problem specifications. We illustrate this approac ..."
Abstract

Cited by 47 (15 self)
 Add to MetaCart
Algorithm theories represent the structure common to a class of algorithms, such as divideandconquer or backtrack. An algorithm theory for a class A provides the basis for design tactics – specialized methods for designing Aalgorithms from formal problem specifications. We illustrate this approach with recent work on the theory of global search algorithms and briefly mention several others. Several design tactics have been implemented in the KIDS/CYPRESS system and have been used to semiautomatically derive many algorithms. 1.
Towards Parallel Programming by Transformation: The FAN Skeleton Framework
, 2001
"... A Functional Abstract Notation (FAN) is proposed for the specification and design of parallel algorithms by means of skeletons  highlevel patterns with parallel semantics. The main weakness of the current programming systems based on skeletons is that the user is still responsible for finding the ..."
Abstract

Cited by 20 (10 self)
 Add to MetaCart
A Functional Abstract Notation (FAN) is proposed for the specification and design of parallel algorithms by means of skeletons  highlevel patterns with parallel semantics. The main weakness of the current programming systems based on skeletons is that the user is still responsible for finding the most appropriate skeleton composition for a given application and a given parallel architecture. We describe a transformational framework for the development of skeletal programs which is aimed at filling this gap. The framework makes use of transformation rules which are semantic equivalences among skeleton compositions. For a given problem, an initial, possibly inefficient skeleton specification is refined by applying a sequence of transformations. Transformations are guided by a set of performance prediction models which forecast the behavior of each skeleton and the performance benefits of different rules. The design process is supported by a graphical tool which locates applicable transformations and provides performance estimates, thereby helping the programmer in navigating through the program refinement space. We give an overview of the FAN framework and exemplify its use with performancedirected program derivations for simple case studies. Our experience can be viewed as a first feasibility study of methods and tools for transformational, performancedirected parallel programming using skeletons.
From Dynamic Programming to Greedy Algorithms
 Formal Program Development, volume 755 of Lecture Notes in Computer Science
, 1992
"... A calculus of relations is used to reason about specifications and algorithms for optimisation problems. It is shown how certain greedy algorithms can be seen as refinements of dynamic programming. Throughout, the maximum lateness problem is used as a motivating example. 1 Introduction An optimisat ..."
Abstract

Cited by 14 (3 self)
 Add to MetaCart
A calculus of relations is used to reason about specifications and algorithms for optimisation problems. It is shown how certain greedy algorithms can be seen as refinements of dynamic programming. Throughout, the maximum lateness problem is used as a motivating example. 1 Introduction An optimisation problem can be solved by dynamic programming if an optimal solution is composed of optimal solutions to subproblems. This property, which is known as the principle of optimality, can be formalised as a monotonicity condition. If the principle of optimality is satisfied, one can compute a solution by decomposing the input in all possible ways, recursively solving the subproblems, and then combining optimal solutions to subproblems into an optimal solution for the whole problem. By contrast, a greedy algorithm considers only one decomposition of the argument. This decomposition is usually unbalanced, and greedy in the sense that at each step the algorithm reduces the input as much as poss...
A Transformational Framework for Skeletal Programs: Overview and Case Study
 Parallel and Distributed Processing. IPPS/SPDP’99 Workshops Proceedings. Lecture Notes in Computer Science 1586
, 1999
"... A structured approach to parallel programming allows to construct applications by composing skeletons, i.e., recurring patterns of task and dataparallelism. First academic and commercial experience with skeletonbased systems has demonstrated both the benefits of the approach and the lack of a spe ..."
Abstract

Cited by 13 (2 self)
 Add to MetaCart
A structured approach to parallel programming allows to construct applications by composing skeletons, i.e., recurring patterns of task and dataparallelism. First academic and commercial experience with skeletonbased systems has demonstrated both the benefits of the approach and the lack of a special methodology for algorithm design and performance prediction. In the paper, we take a first step toward such a methodology, by developing a general transformational framework named FAN, and integrating it with an existing skeletonbased programming system, P3L. The framework includes a new functional abstract notation for expressing parallel algorithms, a set of semanticspreserving transformation rules, and analytical estimates of the rules' impact on the program performance. The use of FAN is demonstrated on a case study: we design a parallel algorithm for the maximum segment sum problem, translate the algorithm in P3L, and experiment with the target C+MPI code on a Fujitsu AP1000 parallel machine.
Extracting and Implementing List Homomorphisms in Parallel Program Development
 Science of Computer Programming
, 1997
"... this paper, we study functions called list homomorphisms, which represent a particular pattern of parallelism. ..."
Abstract

Cited by 12 (0 self)
 Add to MetaCart
this paper, we study functions called list homomorphisms, which represent a particular pattern of parallelism.
Optimizing Compositions of Scans and Reductions in Parallel Program Derivation
, 1997
"... Introduction We study two popular programming schemas: scan (also known as prefix sums, parallel prefix, etc.) and reduction (also known as fold). Originally from the functional world [3], they are becoming increasingly popular as primitives of parallel programming. The reasons are that, first, such ..."
Abstract

Cited by 9 (2 self)
 Add to MetaCart
Introduction We study two popular programming schemas: scan (also known as prefix sums, parallel prefix, etc.) and reduction (also known as fold). Originally from the functional world [3], they are becoming increasingly popular as primitives of parallel programming. The reasons are that, first, such higherorder combinators are adequate and useful for a broad class of applications [4], second, they encourage wellstructured, coarsegrained parallel programming and, third, their implementation in the MPI standard [14] makes the target programs portable across different parallel architectures with predictable performance. Our contributions are as follows:  We formally prove two optimization rules: the first rule transforms a sequential composition of scan and reduction into a single reduction, the second rule transforms a composition of two scans into a single scan.  We apply the first rule in the formal derivation of a parallel algorithm for the
Parallel Algorithms For Maximum Subsequence And Maximum Subarray
, 1995
"... Given a sequence Q of n numbers (positive and negative), the maximum subsequence of Q is the contiguous subsequence that has the maximum sum among all contiguous subsequences of Q. Given a twodimensional array A of n \Theta n numbers (positive and negative), the maximum subarray of A is the con ..."
Abstract

Cited by 9 (0 self)
 Add to MetaCart
Given a sequence Q of n numbers (positive and negative), the maximum subsequence of Q is the contiguous subsequence that has the maximum sum among all contiguous subsequences of Q. Given a twodimensional array A of n \Theta n numbers (positive and negative), the maximum subarray of A is the contiguous subarray that has the maximum sum among all contiguous subarrays of A. We present two O(log n)time parallel algorithmsone for finding the maximum subsequence sum of a given sequence, and the other for finding the maximum subarray sum of a given array. The former is optimal on an EREW PRAM. The latter is optimal on a CREW PRAM, in the sense that the timeprocessor product matches the current sequential upperbound of O(n 3 ).